显然,那里的意见种类很多,其中包括" 永远!永远封装(即使它仅仅是一个宏!) "至" 这没什么大不了的 - 当它更方便时使用它们. "
所以.
具体,具体原因(最好以一个例子为准)
虽然这是主观的,但我会选择一个答案(对我而言,这最能代表每个开发人员应该与全局人员建立的爱/恨关系),社区将投票给他们.
我相信新手有这样的参考是很重要的,但如果存在与你的答案基本相似的另一个答案,请不要混淆 - 添加评论或编辑其他人的答案.
-亚当
我编写的大多数程序都是相对可流程化的过程,具有明确的开始和希望结束.问题本身可能很复杂,但不容易倾向于集中使用对象和事件驱动编程.通常,我只是通过各种批量的文本数据来生成不同的文本数据.偶尔我只需要创建一个类:例如,为了跟踪警告,错误和调试消息,我创建了一个带有一个实例(myErr)的类(Problems),我相信它是Singleton设计模式的一个例子.作为另一个因素,我的同事比我更老派(程序),并且不熟悉面向对象的编程,所以我不愿意创造他们无法解开的事情.
然而,我一次又一次地听到,Singleton设计模式是否真的是一种反模式,应该避免,因为全局变量是坏的.
次要函数需要传递给它们的参数很少,并且不需要知道配置(不变)或程序状态(更改) - 我同意.但是,链中间的函数(主要控制程序流)需要大量的配置变量和一些程序状态变量.我相信将十几个参数传递给一个函数是一个"解决方案",但几乎不具吸引力.当然,我可以将变量填充到单个散列/字典/关联数组中,但这似乎是作弊.
例如,连接到Active Directory以创建一个新帐户,我需要诸如管理用户名,密码,目标OU,一些默认组,域等配置变量.我将不得不通过各种方式传递这些参数甚至不使用它们的功能,只是通过链条将它们拖垮,这最终会导致实际需要它们的功能.
我至少会声明配置变量是不变的,以保护它们,但是现在我选择的语言(Python)没有提供简单的方法来做到这一点,尽管配方确实存在作为变通方法.
无数的Stack Overflow问题已经触及了为什么?不良和必要的回避,但不要经常提到与这种准宗教限制生活的技巧.你是如何解决全球变量和项目状态的问题,或者至少与之和解?你在哪里做出妥协?你的伎俩是什么,除了围绕功能的争论?