【发布时间】:2008-11-10 18:41:31
【问题描述】:
我已经阅读了很多次,并且同意避免使用全局变量来保持代码正交。使用配置文件来保持程序使用的只读信息是否类似于使用 Globals?
【问题讨论】:
标签: language-agnostic coding-style
我已经阅读了很多次,并且同意避免使用全局变量来保持代码正交。使用配置文件来保持程序使用的只读信息是否类似于使用 Globals?
【问题讨论】:
标签: language-agnostic coding-style
如果您使用配置文件代替全局变量,那么是的,它们是相似的。
配置文件应仅在最终用户(可能是精通计算机的用户,如开发人员)需要声明应用程序或代码段的设置,同时避免他们的手离开代码本身的情况下使用。
【讨论】:
我的第一反应是不一样。我认为全局变量的问题在于读写场景。配置文件是只读的(至少在执行方面)。 同样,常量不被认为是不良的编程行为。配置文件,至少在我使用它们的方式上,只是易于更改的常量。
【讨论】:
好吧,因为配置文件和全局变量都可以在整个系统中传播更改 - 它们大致相似。
但是...在配置文件的情况下,更改通常会发生在一个单一的、高度可见的(对开发人员而言)位置,并且全局变量可能会非常隐秘地影响更改并且难以追踪方式——所以在这种方式下,这两个概念并不相似。
拥有一个配置文件通常有助于DRY concepts,它也不应该伤害系统的orthogonality。
使用 25 美元的单词“正交”可以获得奖励积分。我不得不在 Wikipedia 中查找那个以找出非欧几里得定义。
【讨论】:
配置文件实际上是为了让最终用户可以轻松编辑,作为告诉程序如何运行的一种方式。
一种更专业的配置文件形式,即用户首选项,用于记住程序执行之间的内容。
【讨论】:
全局与永远不会更改的对象的唯一实例相关,而配置文件用作引用值的容器,用于应用程序中可以更改的对象。
一个“全局”对象在运行时永远不会改变,另一个对象是通过配置文件初始化的,但可以在以后改变。
实际上,这些对象不仅可以在应用程序的生命周期内更改,它们还可以监视配置文件以实现“热更改”(在不停止/重新启动应用程序的情况下修改其值),如果该配置文件被修改。
【讨论】:
它们绝对不是相同的或相互替代的。配置文件或对象可以非全局使用,即显式传递。
您当然可以有一个引用配置对象的全局变量,但这会违背目的。
【讨论】: