这部分主要解决实际编程中出现的问题,提高代码的质量
第14条 宁可编译时和链接时错误,也不要运行时错误
(1) 静态检查与数据和控制流无关
(2)静态表示的模型更加可靠
(3)静态检查不会带来运行时的开销
第15条 积极使用const
不变的值易于理解,跟踪和分析。
const 并不深。假如类C 有一个X*成员, const 的C 对象中的成员也是 const-- 但它所指向的X对象不是则不是
第16条 避免使用宏
例外:
(1) #include guard
(2) 公共代码
(3)用宏驱动一个公共接口多个实现
第17条 避免使用“魔数”
在命名空间定义为常量
在类中定义常量
第18条 尽可能局部申明变量
避免作用域膨胀,尽可能缩短变量的生命周期
例外:
(1)变量提出循环
(2) 常量
第19条 总是初始化变量
例外:
(1) 硬件或者其他进程直接写入的输入缓冲区数据
(2) volatile型数据
第20条 避免函数过长,避免嵌套过深
(1)尽量紧凑: 一个函数只赋予一个职责
(2)不要自我重复: 优先使用命名函数,而不要让相似的代码片段反复出现
(3)优先使用&&: 在可以使用&&条件判断的地方要避免使用嵌套if
(4)优先使用标准算法:算法比循环嵌套要少,通常较好
(5)不要过分使用try: 优先使用析构函数进行自动清除而避免使用try
(6) 不要根据类型标签(type tag)进行分支(switch):优先使用多态函数
第21条 避免跨编译单元的初始化依赖
第22条 尽量减少定义性依赖,避免循环依赖
(需重新理解)
第23条 头文件应该自给自足
第24条 总是编写内部#include guard,绝不编写外部#include guard