此系列文章实为对《高质量程序设计指南--C++/C语言》的重点摘要总结
本篇总结的为程序版式:
良好的代码版式有助于阅读代码和进行维护。可以设想,没有良好的排版的文章,估计读者看不到一半就没耐心继续往下读了。代码更是如此,没有好的编程风格,写出来的代码只会苦涩,让人难以阅读和理解。所以学习良好的编程风格是百利而无一害的!
利用好空格与换行(这两者能使我们代码的意思更加的清晰)
换行:
空行不会浪费内存,所以不要舍不得,但也不能滥用!一般我们会在以下情况添加空行(或进行换行):
- 在每个类声明后、每个函数定义结束后添加
- 在一个函数体内,逻辑密切的相关语句之间不添加,反之可添加空行进行分隔
- 一行代码只做一件事情。即一行只定义一个变量,或只写一条语句。这样方便阅读和注释
- if \ for \ while \ do 等语句独自占一行,执行语句不紧跟其后,不论执行语句的多少
尽量在定义变量的同时对该变量进行初始化,这样做可以避免引用了未被初始化变量带来的错误。
空格:
合理地使用空格,使变量名或关键字与其他的字符保持一定的距离。这样做,就避免了因代码的过度紧凑带来 “审美疲劳” 。
同样,关于如何合理使用空格,有以下的建议:
- 所有的关键字后至少留一个空格。而像 if \ while \ for 等关键字后应留一个空格再跟左括号 ‘ ( ’
- 函数名不能留空格
- ' ( ' 向后紧跟, ' ) ', ' , ', ' ; ' 向前紧跟
- ‘ , ’ 后留空格,若‘ ; ’ 不是一行的结束符号,其后要留空格
- 二元操作符前后应加空格
- 一元操作符前后不加空格
- ‘[ ] ', ' . ', ' - > ' 前后不加空格
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字符内。虽然如此,但我们可设想如果一整行都写满了,无疑会为我们阅读代码和维护带来不便。所以就需要进行长行拆分。
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进行自增
if ()
{
//代码行
while ()
{
//代码行
} // end of while
//代码行
} // end of if
类的版式(主要有两种):
- “以数据为中心”。私有类型的数据写在前面,将公有类型的函数写在后面
- “以行为为中心”。将公有类型的函数写在前面,私有类型的数据写在后面
建议采用“以行为为中心”。这样不仅让自己在设计类时思路清晰,而且方便别人阅读。因为用户关心的是接口。