Python面向对象编程:构建游戏和GUI
上QQ阅读APP看书,第一时间看更新

1.3 过程式实现的常见问题

本章展示的示例有一个共同的问题:函数操作的所有数据存储在一个或多个全局变量中。出于下面的原因,在过程式编程中大量使用全局数据不是好的做法。

(1)如果函数使用或者修改全局数据,则很难在其他程序中重用该函数。访问全局数据的函数在操作与函数代码本身处于不同(更高)级别的数据。该函数将需要使用global语句来访问全局数据。你不能直接在另外一个程序中重用一个依赖全局数据的函数,而只能在具有类似全局数据的程序中重用它。

(2)许多过程式程序有大量全局变量。按照定义,全局变量可被程序中任意地方的任何代码使用或修改。过程式程序中常常散布着对全局变量赋值的语句,可能包含在主代码中,也可能包含在函数内。因为变量值可能在任何地方改变,所以极难调试和维护采用这种方式编写的程序。

(3)使用全局数据的函数常常访问过多数据。当函数使用一个全局列表、字典或其他任何全局数据结构时,它能够访问该数据结构中的所有数据。但是,函数通常只应该操作该数据结构中的一部分数据(或少量数据)。能够读写大型数据结构中的任何数据,可能导致出现错误,如不小心使用或者重写该函数不应该访问的数据。