高质量C/C++编程指南--程序版式

来源:岁月联盟 编辑:exp 时间:2012-11-10

良好的代码版式有助于阅读代码和进行维护。可以设想,没有良好的排版的文章,估计读者看不到一半就没耐心继续往下读了。代码更是如此,没有好的编程风格,写出来的代码只会苦涩,让人难以阅读和理解。所以学习良好的编程风格是百利而无一害的!
利用好空格与换行(这两者能使我们代码的意思更加的清晰)
空行不会浪费内存,所以不要舍不得,但也不能滥用!一般我们会在以下情况添加空行(或进行换行):
在每个类声明后、每个函数定义结束后添加
在一个函数体内,逻辑密切的相关语句之间不添加,反之可添加空行进行分隔
一行代码只做一件事情。即一行只定义一个变量,或只写一条语句。这样方便阅读和注释
if / for / while / do 等语句独自占一行,执行语句不紧跟其后,不论执行语句的多少
尽量在定义变量的同时对该变量进行初始化,这样做可以避免引用了未被初始化变量带来的错误。
 
合理地使用空格,使变量名或关键字与其他的字符保持一定的距离。这样做,就避免了因代码的过度紧凑带来 “审美疲劳” 。
同样,关于如何合理使用空格,有以下的建议:
所有的关键字后至少留一个空格。而像 if / while / for 等关键字后应留一个空格再跟左括号  ‘ ( ’
函数名不能留空格
' ( ' 向后紧跟, ' ) ',  ' , ',  ' ; ' 向前紧跟
‘ , ’ 后留空格,若‘ ; ’ 不是一行的结束符号,其后要留空格
二元操作符前后应加空格
一元操作符前后不加空格
‘[ ] ',   ' . ',  ' - > ' 前后不加空格
[cpp]
int    width;  // 宽度 
int    height; // 高度 
 
x = a + b; 
y = c + d; 
 
if (width <= height) 

    function(); 

// 空行 
for (int i=0; i<n; i++) 

    function(); 

 
void function(int i, int j); 
 
if ((a>=b) && (c<=d)) 

    //...  

 
x = a < b ? a : b; 
 
a[5] = 0; 
a.function(); 
a->function(); 

 长行拆分:
代码行的最大长度控制在70至80字符内。虽然如此,但我们可设想如果一整行都写满了,无疑会为我们阅读代码和维护带来不便。所以就需要进行长行拆分。
[cpp] 
if ((very_longer_variable1 >= very_longer_variable12) 
   && (very_longer_variable3 <= very_longer_variable14) 
   && (very_longer_variable5 <= very_longer_variable16)) 

    function(); 

 
for (very_longer_initialization; 
     very_longer_condition; 
     very_longer_update) 

    function();   

注释(通常用于):
版本、版权声明
函数接口声明
重要的代码行或段落提示
注释建议与规则:
注释应当准确、易懂、防止有二义性
边写代码边注释,修改代码的同时修改注释,保证一致性
当代码比较长,特别是多重嵌套时,应当在一些段落的结束处加注释,便于阅读
注释的位置应与被描述的代码的相邻,最好放在代码的上方或右方,不可以在下方
注释不能滥用。因为精简到位的注释能帮助我们理解代码的意思,但如过多的滥用,并且做一些“多余”的注释。只会多此一举。例如: i++;  / / 变量i进行自增
[cpp] view plaincopyprint?
if () 

    //代码行 
    while () 
    { 
        //代码行 
    } // end of while 
 
    //代码行 
 
} // end of if 

类的版式(主要有两种):
“以数据为中心”。私有类型的数据写在前面,将公有类型的函数写在后面
“以行为为中心”。将公有类型的函数写在前面,私有类型的数据写在后面
 
建议采用“以行为为中心”。这样不仅让自己在设计类时思路清晰,而且方便别人阅读。因为用户关心的是接口。