【发布时间】:2016-10-21 22:22:38
【问题描述】:
我正在寻找一种 DRY 模式来管理跨平台 C++ 应用程序中的应用程序配置。
理想情况下,我希望拥有一个确定的应用程序配置来源,以最大程度地减少开发人员的维护负担。这可以存储为 txt、XML、JSON、YAML
这个文件有两个用途...
首先,它用于创建用户可以访问的配置文件。
其次,当用户决定删除全部或部分配置文件时,它将确定要使用的默认值。
我探索过的选项...
让某种预处理器在编译时将配置文件编译到应用程序中。这似乎是不可能的。
创建一个读取配置文件的工具,并生成必要的代码以将默认值编译到应用程序中。这会奏效,但会增加我希望避免的构建过程的复杂性。
创建两个配置文件,一个是用户可配置的,另一个包含隐藏的默认值。在应用程序启动时,读取默认文件,然后读取用户文件,通过覆盖默认值来应用用户设置。这并不理想,因为它依赖隐藏文件来保护用户的默认值。
【问题讨论】:
-
那么存在三个玩家:图书馆开发人员(您)、程序员(其他人)和用户(普通乔)?您是否希望普通的 Joe 修改应用程序设置(使用默认值,以防他删除某些设置)或程序员设置它们(再次使用默认值)?你的选项三听起来像我的前者,而你的选项一和二听起来像我的后者。
-
如果主要的绊脚石有一个默认文件,只需将其作为字符串包含在程序中并解析字符串,就好像它是加载到字符串中的文件一样。然后使用相同的配置格式覆盖用户之后可以编辑的默认值。
标签: c++ c++11 configuration app-config