代码之家  ›  专栏  ›  技术社区  ›  yesraaj

在C++中保持配置设置的正确设计是什么?

  •  2
  • yesraaj  · 技术社区  · 15 年前

    假设我有ini/json来存储桌面应用程序的配置设置,那么在启动/需要时加载一个包含所有属性的静态对象是否可以,或者是否有其他更好的选择?

    因为这是我第一次这样做,所以我只想知道静态对象是好的还是单例模式或其他更好的方式

    4 回复  |  直到 15 年前
        1
  •  3
  •   rlbond    15 年前

    我通常使用 Boost.Program_options

        2
  •  2
  •   MrValdez    15 年前

    两种方式都可以。

    如果是我,我会把它放在配置对象的构造上。

    cConfig Config("config.ini");
    

    此配置类将加载文件中的设置。任何代码都可以通过以下操作访问设置:

    Config.Get("NumberOfFoobars")
    

    DoStuff(Config, [...]);
    

    这使得类是可测试的(您可以模拟Config类)、可读的(一眼就能看出哪个函数需要配置),并且您不必依赖静态实例(如果您不知道如何使用它们,单例是危险的)。

    你可能有兴趣 learn more about this

        3
  •  0
  •   Manoj    15 年前


    此外,一些用户有多个ini文件,并在其中旋转,以便在该时间点进行所需的设置。

        4
  •  0
  •   Mark Goddard    15 年前

    在启动时(或第一次需要设置时)加载所有设置将在大部分时间内工作,但用户必须重新启动应用程序才能使对配置文件的任何编辑生效。对于大多数用户来说,这永远不会是一个问题,但对于喜欢直接编辑配置文件的高级用户来说,这可能会令人沮丧。在基于UNIX的OSs上,可以处理SIGHUP信号,该信号已成为重新读取配置文件的可接受触发器。我所知道的Windows没有类似的方法。另一种方法是跟踪配置文件的修改时间,以确定是否应该重新读取设置。