【发布时间】:2016-09-04 07:09:03
【问题描述】:
我有一个应用程序,其中包含许多冗长的工具提示。例如,我有一个这样的工具提示的代码,如下所示:-
//Less SSA (ATi-SSA) (as coded in a header)
std::string GetLessSSA_tt() {
std::string less_ssastr = "Less SSA = The amount after deducting the SSA from the ATI.";
less_ssastr.append("\n\nAs such reducing the amount used for calculation purposes");
//etc
return less_ssastr;
}
......
//Coded at various places not within the header
std::string tooltip = GetLessSSA_tt();
我认为头文件可能是最适合分离数据和代码,避免数据重复的地方。
我愿意接受有关将数据放置在何处的建议(我会排除文件/数据库,但由于需要更多编码和拥有数据,这些数据很少需要更新、遥远并且可能容易被滥用,例如可以更改文件)。
真正的问题是文本存储的实际编码。会有相当数量的。上面的示例是较小文本之一的简化/极简示例。将至少有 27 个主题(解释的术语),这相当于使用示例方法,相当于 27 个函数,每个函数可能至少有 5 行文本。
我猜,数组/双端队列/结构都会增加重复。
我目前对使用预处理器命令/宏的知识和能力非常有限。我所有使用“#defines”的尝试都失败了。
我相信,也许是错误的,预处理器命令可能会限制可移植性(不是真正的问题)。但是,我怀疑也许预处理器可以提高编码效率。
我想要达到的目标总结是
“将文本字符串周围的clutter 减少到最低限度。主要是它们的定义,但也要考虑后续使用。”
【问题讨论】:
-
您是否考虑过从某种文件中读取它?这将允许在没有程序的情况下更改文本,而且开发人员不需要全部编写(您的 QA 部门可以编写文本等)
-
是的,我实际上有这个用于每年变化的数据。但是,不是数据会发生变化,或者很少发生变化,如果要发生变化,可能是因为编码更改会适用。文本是解释性术语,8 年多来一直保持不变,没有任何改变的迹象。例如SSA 代表 Self-Support Amount.......
-
P.S.开发人员 dpt 是我,QA dpt 是我,等等等等 :)
-
如果这是在 Windows 上,请考虑将文本作为文本资源存储在应用程序中。这样,如果有一天有必要,将您的应用程序翻译成另一种语言或更改消息也会更容易。无需重新编译即可编辑资源。而且它们不会弄乱您的源代码。我猜其他平台也有类似的方式在应用中存储文本和图像等。
-
那为什么不把函数定义在头文件中,把实现放到cpp文件中,这样可以消除重复文本呢?
标签: c++ string tooltip c-preprocessor mingw32