记录《高质量程序设计指南》的所给出的一些建议,用作复习。
建议1在使用运算符 “&&”的表达式中,要尽可能把最有可能为false的子表达式放在“&&”的左边;同样,在使用运算符**||**的表达式中,要尽量把最有可能为true的子表达式放在”||“的左边,因为C/C++对逻辑表达式的判断采取 “突然死亡法”。如果“&&"左边的子表达式计算结果为false,则整个表达式为false,后面的子表达式没有必要再计算。这种方法可以提高执行效率。
建议2在if/else结构中,要尽量把为TRUE的概率较高的条件判断置为前面,这样可以提高该段程序的性能。
补充:
看到 if( NULL == p)这样的结构是合理的。为了防止讲 if(p == NULL)误写成 if( p = NULL),有意把p和NULL颠倒。编译器认为 if( p = NULL)是合法的,但是会指出 if( NULL = p)是错误的,因为NULL不能被赋值,类似的还有 if(100 == i)。
对于C/C++而言,不论行列数量如如何,要以先行后列的顺序遍历。这是因为如果采取 先列后行 的顺序遍历,则发生的页面交换次数要比 “先行后列”
多,且cache命中率相对也低。
C++程序中应尽量使用const来定义符号常量,包括字符串常量。
优点
(1)const常量有数据类型,宏定义没有;编译器可以对前者进行类型安全检查,对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)。
(2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
待续。。。。。



