在模型代码中使用枚举时减少代码重复,而不是数据库和GUI

时间:2016-07-29 08:45:32

标签: c++ enums code-duplication

我的一个模型类中有一个枚举,所以我不必担心传递给它的错误值。

我遇到的问题是,由于所说的枚举,我的代码中有很多代码重复。每当我想要更改枚举时,我还必须更改代码的这些部分,以使整个过程完成:

  • 更改枚举本身
  • 更改SQL表定义(我使用MySql枚举)
  • 更改数据访问层中的enumToString转换表(我需要sql查询的字符串)
  • 更改数据访问层中的stringToEnum转换表(将检索到的值转换回正确的枚举条目)
  • 为我的GUI用法更改enumToPrettyString转换表(显示人类可读的字符串而不是存储的数据库)
  • 更改所有可用枚举条目的列表,以便我可以在我的GUI中填入一个下拉框,其中包含用户可以选择的所有条目

我知道Javas Enum类更强大,你可以直接在枚举条目定义中添加很多这些信息,但C ++枚举只是内部的整数,所以我不方便。

如何才能最大限度地减少代码重复?

1 个答案:

答案 0 :(得分:2)

这是代码生成的理想选择。为您的枚举编写单个规范,然后在所有语言环境中生成所有必需的转换代码。利用您的构建系统来保持最新状态。主要的缺陷是,如果你曾经存储或序列化低级整数表示,你需要注意永远不要删除/重新利用任何枚举构造函数(只需在最后添加新的构造函数)。