【问题标题】:The use of config file is it equivalent to use of globals?使用配置文件是否等同于使用全局变量?
【发布时间】:2008-11-10 18:41:31
【问题描述】:

我已经阅读了很多次,并且同意避免使用全局变量来保持代码正交。使用配置文件来保持程序使用的只读信息是否类似于使用 Globals?

【问题讨论】:

    标签: language-agnostic coding-style


    【解决方案1】:

    如果您使用配置文件代替全局变量,那么是的,它们是相似的。

    配置文件应仅在最终用户(可能是精通计算机的用户,如开发人员)需要声明应用程序或代码段的设置,同时避免他们的手离开代码本身的情况下使用。

    【讨论】:

    • 我并不是说这个答案的第一部分听起来很尖刻。我试图说明的一点是,配置文件不是防止全局变量的解决方法。
    【解决方案2】:

    我的第一反应是不一样。我认为全局变量的问题在于读写场景。配置文件是只读的(至少在执行方面)。 同样,常量不被认为是不良的编程行为。配置文件,至少在我使用它们的方式上,只是易于更改的常量。

    【讨论】:

      【解决方案3】:

      好吧,因为配置文件和全局变量都可以在整个系统中传播更改 - 它们大致相似。

      但是...在配置文件的情况下,更改通常会发生在一个单一的、高度可见的(对开发人员而言)位置,并且全局变量可能会非常隐秘地影响更改并且难以追踪方式——所以在这种方式下,这两个概念并不相似。

      拥有一个配置文件通常有助于DRY concepts,它也不应该伤害系统的orthogonality

      使用 25 美元的单词“正交”可以获得奖励积分。我不得不在 Wikipedia 中查找那个以找出非欧几里得定义。

      【讨论】:

      • 是的,阅读The Pragmatic Programmer和globals的主题是解耦后介绍的。想到配置文件的想法,想确定它们的邪恶程度。
      【解决方案4】:

      配置文件实际上是为了让最终用户可以轻松编辑,作为告诉程序如何运行的一种方式。

      一种更专业的配置文件形式,即用户首选项,用于记住程序执行之间的内容。

      【讨论】:

        【解决方案5】:

        全局与永远不会更改的对象的唯一实例相关,而配置文件用作引用值的容器,用于应用程序中可以更改的对象。

        一个“全局”对象在运行时永远不会改变,另一个对象是通过配置文件初始化的,但可以在以后改变。

        实际上,这些对象不仅可以在应用程序的生命周期内更改,它们还可以监视配置文件以实现“热更改”(在不停止/重新启动应用程序的情况下修改其值),如果该配置文件被修改。

        【讨论】:

          【解决方案6】:

          它们绝对不是相同的或相互替代的。配置文件或对象可以非全局使用,即显式传递。

          您当然可以有一个引用配置对象的全局变量,但这会违背目的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-11-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-20
            • 2018-01-20
            • 2020-12-31
            相关资源
            最近更新 更多