我写的大多数程序都是相对可流程化的过程,有一个明确的开始和希望的结束。问题本身可能很复杂,但不容易倾向于集中使用对象和事件驱动的编程。通常,我只是通过大量不同批次的文本数据来产生不同的文本数据。我偶尔需要创建一个类:作为一个例子,为了跟踪警告,错误和调试消息,我创建了一个具有一个实例(myErr)的类(Problems),我相信这是一个Singleton设计模式的示例。另一个因素是,我的同事比我更老(程序性),而且不熟悉面向对象编程,所以我不愿意创造他们无法解决的问题。请尽量减少使用全局变量来描述你的工作
但我一次又一次地听到,即使Singleton设计模式真的是反模式,应该避免,因为全局变量不好。
小功能需要很少的参数传递给他们,并不需要知道配置(不变)或程序状态(改变) - 我同意。然而,主要控制程序流程的链中间的函数需要大量的配置变量和一些程序状态变量。我相信将一个或多个论点传递给一个函数是一个“解决方案”,但几乎没有吸引力。当然,我可以将变量压缩到单个哈希/字典/关联数组中,但这看起来像是作弊。
例如,连接到Active Directory以创建新帐户,我需要配置变量作为管理用户名,密码,目标OU,某些默认组,域等。我必须通过这些参数通过甚至不使用它们的各种功能,只是通过一个链最终导致实际上需要它们的功能将它们洗掉。
我至少会声明配置变量是恒定的,以保护它们,但我最近选择的语言(Python)没有提供简单的方法来做到这一点,尽管食谱确实存在作为解决方法。
许多堆栈溢出问题已经打到了为什么?坏的和必要的回避,但不要经常提到与这种准宗教限制一起生活的提示。你是如何解决全球变量和计划状态问题的,或者至少是和平的?你在哪里做出妥协?除了围绕函数的参数成群之外,你有什么技巧呢?
好问题 - 您是否将类级变量(成员)分类为全局变量? – 2010-05-05 15:27:05