您最不喜欢的C ++编码指南

时间:2008-10-23 19:30:38

标签: c++ coding-style

作为C++ Coding Guideline 102的对应部分,您最常违反或忽略了101 guidelines of Sutter & Alexandrescu中的哪一个,为什么?

8 个答案:

答案 0 :(得分:5)

我会告诉我,它可能是16个。避免使用宏。我发现有很多东西我只能用宏来做(特别是将__FILE__和__LINE__内联到表达式中),而且很多情况下我需要一个在外部函数上下文中运行的紧凑表达式(检查结果代码并返回,例如)。结果,例如,我的代码往往会以宏的形式大量使用断言,所以我会说这是我忽略的一个。

那就是说,如果语言允许使用相同概念的替代类似的紧凑表达式,我会放弃我的大部分用法,但由于它没有,宏将会存在很长时间。

我应该补充一点,这并不是说我认为这个建议很糟糕,或者当你有另一种选择时跟进它是不好的。我发现我最终使用了很多宏,通常是因为没有替代品可用。

答案 1 :(得分:5)

我昨天在这个网站上打破了19(总是初始化变量)。我的代码段是:

uint64_t i = getIEEEbitpatternByMeansRelevantToTheQuestion();
double d;
memcpy(&d, &i, 8);

在初始化d中看不到任何一点:没有可能有意义的值,编译器会忽略我提供的值,或者做一些浪费的事情。

初始化非POD类型和作为类成员的POD类型是非常明智的。初始化一些东西只是为了memcpy / memset而不是它。

事实上,初始化非POD的原因之一是避免您刚刚在后面的顶部分配的默认构造。初始化你计划涂鸦的POD基本上是一件坏事。

我没有这本书,所以它可能是他们的意思,标题中的“总是”是误导性的。

答案 2 :(得分:2)

说实话,我随着时间的推移自然而然地养成了几乎完全符合这些指导方针的习惯。遵循这些类型的编码标准可以实现干净,易于维护的代码。

答案 3 :(得分:2)

没有。 56 - 默认使用向量。我经常使用deque代替。有趣的是,Herb Sutter appears to be conflicted on this himself

答案 4 :(得分:2)

我现在喜欢一个好的C风格演员,我不敢承认。 (我意识到它的问题 - 只是无法帮助自己)

答案 5 :(得分:1)

72。希望使用例外来报告错误。

相反,我使用 72-ALT。不要抛出异常。:)

好的,除了在已发布的代码库的公共API层中报告调用者的前置条件违规 - 并且仅在该层中。

答案 6 :(得分:0)

我忽略了大部分内容,因为它们可以概括为:使用C ++就好像它是一种高级的面向对象语言。但是如果你想要一个高级的面向对象语言,那么有更好的候选者(C#,Java,Lisp,Python等)。 C ++本质上是所有结构化宏汇编程序的母亲,我就这样使用它,并且只在那些需要它的作业中使用。

答案 7 :(得分:0)

看了all the rules后,它会是: 89。正确编写函数对象。我从不花时间正确地写它们。有时我使用可变函数,但它不是我的选择。