假设我有ini / json存储我的桌面应用程序的配置设置,是否可以在启动时加载所有属性的静态对象/何时需要它还是有其他更好的选择吗?
因为这是我第一次这样做,所以只是想知道静态对象是好还是单例模式还是别的什么会更好
答案 0 :(得分:2)
无论哪种方式都没问题。
如果是我,我会在构建配置对象时使用它。
cConfig Config("config.ini");
此Config类将加载文件中的设置。任何代码都可以通过
访问设置Config.Get("NumberOfFoobars")
出于可测试性目的,如果构造中没有文件,则将类的设置设置为默认值,或者创建一个日志文件,其中包含一条通知用户缺少设置的行。
然后对于需要配置的函数,我会将Config实例作为参数的一部分传递:
DoStuff(Config, [...]);
让DoStuff从Config类中获取变量。
这使得类可测试(你可以模拟Config类),可重命名(一目了然,你可以告诉哪个函数需要Configs)而且你不必依赖静态实例(如果你不这样做,单身就很危险知道如何使用它们。)
感兴趣答案 1 :(得分:1)
我通常使用Boost.Program_options,我通常使用单身。
答案 2 :(得分:0)
如果用户要修改配置设置以确定应用程序的运行方式,那么将它保存在某个ini文件中可能会更好。有些用户喜欢直接编辑ini文件而不是通过GUI编辑。最好同时给出两种选择。
还有一些用户有多个ini文件,并在它们之间轮换,以便在那个时间点进行设置。
答案 3 :(得分:0)
在启动时(或第一次需要设置)加载所有设置将在大多数情况下工作,但用户必须重新启动应用程序才能使配置文件的任何编辑生效。对于大多数用户来说,这永远不会成为问题,但对于喜欢直接编辑配置文件的高级用户而言,这可能令人沮丧。在基于UNIX的操作系统上,可以处理SIGHUP信号,该信号已成为重新读取配置文件的可接受触发器。对于Windows,我没有类似的方法。另一种方法是跟踪配置文件的修改时间,以确定是否应该重新读取设置。