全局变量
程序语言中的全局变量,便于在程序之间共享信息。今天看到了这样一句话:
当编写复杂代码时,程序员往往试图使用全局变量,将值共享给多个函数,但这样做会使代码很难维护。
这是程序员的倾向
程序员在面对问题时,往往会选择一种比较直接,比较简洁的方式去完成。在多个方法中去公共维护一些共有的数据时,全局变量时其中最简单直接的方式。有时还是唯一方式。
比如:比如两个方法,共享了一个变量,都需要对这变量进行读写,这时脱离两个方法的全局变量就是最直接的方式。
在面向对象编程也是
面向对象的编程语言,共享信息的编程需求是如何满足的呢?
- 通过成员变量实现同一对象上不同方法之间的信息共享。
- 通过静态成员变量实现不同对象上的信息共享
- 通过静态类 实现全局共享
通过这个比较,我们可以看到,信息共享在面向对象中被分层了三个层次。为了让程序更加可维护,程序员根据信息共享需求的范围,在这三个层次中选取合适的方式表达。
进一步的思考
全局变量的处理方式,在我们的日常生活中也是存在的。比如,我们会把我们经常用到的一些公共信息放在一些大家都可以看到的地方。让需要这些信息人能够便捷的找到,从而提高工作生活的效率。
比如:在QQ群中,需要将一些公共的信息放到群公告中,或者放在群共享中。这样做可以提高群的维护效率。
再比如:在生活中,我们回把一些大家都需要使用的工具放在一个共享的位置。比如公交车,公共灭火器,地铁。这些公共设施,为人们所共享,把他们放在便捷获取的位置,将提高生活的效率。
人们也都希望自己的生活更加的便捷,因此总是倾向于让自己能够更便捷的使用公共资源。因此就出现了:
离地铁口近的房子贵:)。
更大范围的思考
除了人类,其他生物也是这样。树木倾向于生长出更多的树叶,从而能够获取更多的公共资源,让自己的信息更多的表达。
但这种表达需要有一个度,达到一个合适的平衡,这样才能够让这种对公共资源的占用能够带来整个系统的效率的提升。
- 定义一个全局变量对于简单程序而言,是便捷的,高效的。但当程序变大,变复杂时,我们需要规划需要引入面向对象的方式,将共享变量进行分级共享。让信息能够在有限的范围内共享。让复杂变得不复杂,从而让整个系统高效。
- 人类的生活也是。我们将自己的电脑硬盘分成多个盘符,将盘符中构建多个文件夹。在不同的文件夹中方式不同的内容。让物品分门别类的放置,形成树状结构。
- 宇宙历史观中,从宇宙大爆炸到现在的相对稳定的星系,这也是一种分门别类的过程。这个分门别类的过程是大量惰性使然。
我们生活的启示
生活中分类,分层就是生产力。结构清晰意味着思路清晰,遇到问题时能够透过问题看到问题内部的逻辑,找到主要的矛盾,从而推动矛盾超有利的方向转化。
公共资源的的分级管理,是有效的组织方式。从宇宙星系,到人类社会,再到编程规范,这里无不存在层次逻辑。