【发布时间】:2014-10-17 21:03:29
【问题描述】:
如果定义类似关键字的宏可以提高代码的可读性,是不是错了?
例如,IMPLICIT 宏:
#define IMPLICIT /* IMPLICIT constructor(parameters...); */
struct X
{
explicit X();
IMPLICIT X(int i);
IMPLICIT X(std::sting s);
explicit X(const char* ch);
};
代替:
struct X
{
explicit X();
X(int i);
X(std::sting s);
explicit X(const char* ch);
};
注意事项:无论代码可读性如何,IMPLICIT 宏的定义都可以更改为简单地禁用所有隐式构造函数或...,以供将来维护。
编辑:我的示例并不重要,我的问题不是针对它的,我删除了block 宏示例。
【问题讨论】:
-
但是你并没有提高代码的可读性。
-
我投票结束这个“主要基于意见”,因为这是主观的。事实上,我同意 juanchopanza,这对我来说似乎很可怕
-
它们并没有提高可读性,因为读者需要在继续之前找到宏的定义。不能信任宏及其名称。
-
简化或澄清代码的宏可能会有所帮助,特别是如果它们有助于在特定项目中重复完成的某些事情 - 封装常见的错误处理策略等。不过,这些例子很疯狂,所以很难具体回答(免责声明或否)。
-
视情况而定。上面的宏很糟糕,增加了冗长和冒着名称冲突的风险。但是在我看来,可以大大减少冗长性、封装实际上无法抽象的样板代码的宏是可以的,只要您使用全部大写名称和相对唯一的前缀。
标签: c++ macros code-readability