Utility
的类,在 utility.h
文件中:class Utility {
public:
static double longDescriptiveName(double x) { return x + 42; }
};
然后我发现我经常使用函数longDescriptiveName(...)
。像一个喝了太多咖啡的不负责任的C++程序员一样,我创建了一个新文件utilitymacros.h
并添加了以下内容:
#define ldn Utility::longDescriptiveName
现在我在任何使用
ldn(...)
的*.cpp
文件中包含"utilitymacros.h"
,这让我非常高兴,因为只需要输入三个字母而不是28个字母。
问题:有没有比使用#define
更安全(更合适)的方法?
我注意到,我必须在包含boost头文件之后包含"utilitymacros.h",这显然不是很好,因为这是冲突的一个迹象(尽管我收到的Boost错误并没有明确指出冲突的原因)。
澄清1:关于代码可读性
如果你认为这会对代码可读性产生负面影响,我向你保证它不会,因为这是一组被广泛使用的小型函数。一个众所周知的例子是stoi
代表stringToInteger
。另一个例子是pdf
代表probabilityDensityFunction
等。因此,在我看来,如果我想要执行以下操作,stoi
更易读:
int x = stoi(a) + stoi(b) + stoi(c) + stoi(d);
那么:
int x = Utility::stringToInteger(a) + Utility::stringToInteger(b)
+ Utility::stringToInteger(c) + Utility::stringToInteger(d);
或者:
int x = Utility::stringToInteger(a);
x += Utility::stringToInteger(b);
x += Utility::stringToInteger(c);
x += Utility::stringToInteger(d);
澄清2: 编辑器宏
我选择使用Emacs作为我的IDE,并且使用Kinesis键盘。因此,我经常使用许多键盘宏、自定义键盘快捷方式,以及实际修改编辑器中所见的内容与实际存储在h/cpp文件中的内容不同。但是,我仍然觉得在少数情况下使用函数缩写的简单性和视觉可读性(如上所述)确实是我正在寻找的结果(当然这在一定程度上是主观的)。
pdf
是一种文件格式,然后会非常困惑。字符是自由的,不使用它们并不能节约环境。 - Bo Persson