《C++编程规范》的原文摘录
-
无法修改的库头文件可能包含引起警告(可能是良性的)的构造。如果这样,可以用自己的包含原头文件的版本将此文件包装起来,并有选择地为该作用域关闭烦人的警告,然后在整个项目的其他地方包含此包装文件。 (查看原文)
-
软件简单为美:质量优于速度,简单优于复杂,清晰优于机巧,安全优于不安全。 (查看原文)
-
如果能够证明优化必要而且非常重要,尤其在数据量逐渐增长的情况下,那么应该集中精力改善算法的O(N)复杂性,而不是进行小型的优化,比如节省一个多余的加法运算。 (查看原文)
-
让一个正确的程序更快速,比让一个快速的程序正确,要容易得太多,太多。 (查看原文)
-
许多类型要求对这种共享对象进行串行访问,但是有些类型却不要求这样。后者通常要么从设计中去掉加锁需求,要么自己进行内部加锁,无论哪种情况,仍然需要留意内部加锁粒度的局限。 (查看原文)
-
在函数声明中,要避免将通过值传递的函数参数声明为const。 (查看原文)
-
不要编写依赖于函数参数求值顺序的代码 (查看原文)
-
将私有部分隐藏在一个不透明的指针(即指向已经声明但是尚未定义的类的指针,最好是选择合适的智能指针) (查看原文)
-
在构造函数中用初始化代替赋值 (查看原文)
-
如果允许多态删除,则析构函数必须是公用的,而且必须是虚拟的。……如果不允许多态删除,则析构函数必须是非公用的,而且应该是非虚拟的。 (查看原文)
-
使用异常报告错误的优势:
1.异常不能不加修改地忽略
2.异常是自动传播的
3.有了异常处理,就不必在控制流的主线中加入错误处理和恢复了
4.对于构造函数和操作符报告错误来说,异常处理要优于其他方案 (查看原文)
-
在容器中只存储值和智能指针 (查看原文)
-
不要对非POD(Plain Old Data)进行memcpy操作或者memcmp操作 (查看原文)