这是一个有趣的小问题,我认为Stack Overflow之前没有讨论过。虽然不是生死攸关的问题,但我很想听听您的意见。
简而言之:我的程序在这方面有点过度设计:它从四个不同的位置获取配置选项:
- 命令行参数
- 配置文件
- 环境变量
- Windows注册表
- (以及硬编码的默认值)
问题是,应该按什么顺序评估这些配置?我认为命令行参数具有最终决定权,但其他三个位置呢?如果在环境变量和ini文件中都设置了相同的选项,哪个应该优先?
那么注册表呢?如果我使用注册表来更改程序的运行时设置,注册表是否会覆盖ini文件?我是否应该将应用于注册表的更改重新编写到配置文件中?是否应该设置注册表设置无法覆盖从环境读取的设置?
(如果你想知道这怎么可能,只需要一个词:X-macro。)