读取配置属性的简单方法

a simple way to read configuration properties

本文关键字:简单 方法 属性 配置 读取      更新时间:2023-10-16

我正在尝试为现有的代码/项目添加一些可配置的属性。我发现有这么多步骤来做这件事真的很烦人:

  1. 向配置文件添加条目
  2. 在h文件中声明一个密钥字符串
  3. 在cpp文件中定义该密钥字符串
  4. 在h文件中声明一个getXXX方法/函数
  5. 在cpp文件中定义getXXX方法/函数

在我们的例子中,头文件和cpp文件只用于从文本文件中读取的属性,这些属性只在这个模块中需要。因此,我们可以用更少的文件或更少的步骤来简化它们。有什么想法/建议吗?

编辑:

地图用于保存文本文件中的内容。

示例获取方法如下:

unsigned int Module1Config::getSleepTime()
{
    return getPropertyMap().getUnsignedIntProperty(SLEEP_TIME_KEY);
}

如果一个私有std::map的密钥只是配置文件中声明的密钥,该怎么办。然后,您可以有一个getter函数,根据需要键入值,如果不存在,则使用默认值:

template<class T>
T get(const std::string &key) const
{
  if the key is in the map,
    return its value converted to type T
  else
    return T();
}

如果声明了某个密钥,您可能会发现第二个函数告诉您有用:

bool exists(const std::string &key) const
{
  return true iif key is in the map
}

这种方法的优点是,添加新属性时不需要修改类。缺点是密钥名称不是作为h文件中的常量标识符创建的,因此您必须始终使用字符串,这可能很容易出错。无论如何,我认为它的多功能性是值得的(这是我在程序中使用的方法)。