高质量C/C++编程指南--读书笔记三 3、4章

第三章  命名规则
 
一、知识点
1、命名规则:(P23)
(1)、在Windows中应用程序的标识符通常采用“大小写”混排的方式,如AddChild。而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。
(2)、全局函数的名字应当使用“动词” 或者“ 动词+ 名词”。类的成员函数应当只用“动词”,被省略掉的名词就是对象本身。
 
2、简单的Windows 应用程序命名规则:(P23)
(1)、类名和函数名用大写字母开头的单词组合而成。
(2)、变量和参数用小写字母开头的单词组合而成。
(3)、常量全用大写的字母,用下划线分割单词。
(4)、静态变量加前缀s_(表示static)。
(5)、如果不得已需要全局变量,则使全局变量加前缀g_ (表示global)。
(6)、类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。
 
 
 
第四章  表达式和基本语句
 
一、知识点
1、if 语句:(P27)
(1)、不可以将布尔变量直接与TRUE、FALSE或者1、0 进行比较,正确方式如下:
if(flag)  // 表示flag为真
if(!flag)  // 表示flag为假
(2)、应当将整型变量用“==” 或 “!=” 直接与 0 比较。
if(value == 0)
不可模仿布尔变量的风格而写成
if(value)   // 会让人误解value 是布尔变量
(3)、不可将浮点变量用“==” 或 “!=” 与任何数字比较。因为float 与 double 类型的变量都是有精度限制的。应该设法转换成“>=” 或 “<=” 形式。
if((x >= -EPSINON) && (x <= EPSINON))
其中EPSINON 是允许的误差(即精度)。
(4)、应当将指针变量用“==” 或“!=” 与NULL比较。尽管NULL的值与0相同,但是两者意义不同。
 
2、循环体的效率:(P29)
(1)、在多重循环中,如果有可能,应该将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数
 

3、如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。下面的例子4-4(c) 的程序比示例 4-4(d) 多执行了 N-1 次逻辑判断。并且由于前者经常要进行逻辑判断,打断了循环“流水线” 作业使得编译器不能对循环进行优化处理,降低了效率。(P30)

posted on 2012-05-01 09:31  谷堆旁边  阅读(238)  评论(0编辑  收藏  举报