作为对口C++编码指南102,它的萨特和Alexandrescu的101个指引你违反或忽视最常用的,为什么?
我会告诉我,它可能是16个.避免使用宏.我发现有很多东西我只能用宏来做(特别是将__FILE__和__LINE__内联到表达式中),而且很多情况下我需要一个在外部函数上下文中运行的紧凑表达式(检查结果代码并返回,例如).因此,我的代码往往会以宏的形式自由地散布,例如,所以我会说这是我忽略的一个.
也就是说,如果语言允许使用相同概念的替代类似的紧凑表达式,我会放弃我的大多数用途,但由于它没有,宏将会存在很长时间.
我应该补充一点,这并不是说我认为这个建议很糟糕,或者当你有另一种选择时跟进它是不好的.我发现我最终使用了很多宏,通常因为没有替代品可用.
我昨天才在这个网站上打破了19(总是初始化变量).我的代码片段是:
uint64_t i = getIEEEbitpatternByMeansRelevantToTheQuestion(); double d; memcpy(&d, &i, 8);
在初始化d中看不到任何一点:没有可能有意义的值,编译器将忽略我提供的值或者用它做一些浪费的事情.
初始化非POD类型和作为类成员的POD类型是非常明智的.初始化一些东西只是为了memcpy/memset而不是它.
事实上,初始化非POD的原因之一是避免您刚刚在后面分配的默认构造.初始化你计划涂鸦的POD基本上是一件坏事.
但是,我没有这本书,所以可能是他们的意思,标题中的"总是"是误导性的.