缩进相关编码准则,提高程序可读性
1、大括号的位置
1.1 该怎么放啊?
- 远古时期,大括号是和程序在同一行的。
- 发展时期,两瓣大括号分别起一行。
- 第三种风格,左边的大括号和语句在同一行,右边的大括号另起一行。这种既能缩短代码长度,又能明确标识代码块和函数的起始点。
- 现在,几乎所有的程序员都采用第三种风格
1.2 示例
一部分程序员主张
-标识函数的起始部分时采用第二种风格;
- 标识其他包括控制结构在内的一般代码块的起始时,采用第三种风格
void main()
{/* <--包含main函数在内的所有函数的大括号独立成行*/
...中间略...
while(!EDN){/* <--其他情况下左边的大括号和语句在同一行,右边的单独一行*/
...
}
...
}
- 这种新的风格有助于区分函数和其他代码块
2、 函数缩进
2.1 典型示例
- 主体部分未缩进,简单的程序容易区分函数头和函数体.程序稍微多点,就不好看了。
void main()
{
printf("缩进示例\n");
}
- 主体缩进,便于阅读,一般缩进2~4个字符。出于操作方面考虑,可以缩进2个字符,出于阅读方面考虑,可以缩进4个字符。
void main()
{
printf("缩进示例\n");
}
- 大括号需要缩进吗?
void main()
{
printf("缩进示例\n");
}
- 这样缩进,从语法来看并没有毛病,但是不容易掌握函数的起始结束位置。因此我们不对函数的大括号进行缩进
3、 内部代码块需要缩进哦
3.1 规则及示例
- 代码块是用大括号包起来的语句。
- main()函数中的代码块也要缩进,代码块内部的语句应该比大括号的位置再稍微缩进几个字符。
3.2 示例
...
int main()
{
while(1)
{
total = 0;
for(i = 0; i < mon-1; i++)
{
total = total + a[i];
}
total = total + day;
if(mon > 2 )
{
total = total + 1;
}
printf("%4d-%02d-%02d is %dth days\n", year, mon, day, total);
}
system("pause");
}
4、输出部分要缩进
4.1 不缩进的后果
使用控制语句最能体现出缩进的效果。控制语句分为负责提供控制的判断部分和接受控制的输出部分。
- 输出部分不缩进,看起来很奇怪,让人感觉少点什么
if (num1 == num2)
printf ("%d和%d相同。\n", num1, num2);
- 容易给人下面这种感觉:
if (num1 == num2) <省略了某些语句>
printf ("%d和%d相同。\n", num1, num2);
4.2 多行语句缩进
- 如果很难将输出部分全部缩进,也可以尝试将输出部分写成代码块的样式。下面代码中虽然没有将输出部分的内容缩进,但输出部分从何处开始、到何处为止都一目了然。
if (num1 == num2) {
printf ("%d和%d相同。\n", num1, num2);
printf ("%d和%d相同。\n", num3 num4);
}
- 单条输出语句同样可以加大括号,这种不必要的大括号成为冗余大括号。如下:
if (num1 == num2){
printf ("%d和%d相同。\n", num1, num2);
}
5、不要毫无意义的缩进
- 有时候程序员想为了突出某些语句,而故意空格来强调,实际上大可不必。如果只是想表示强调,那么完全可以用添加注释等方式代替缩进。
int main() {
printf("不要无意义地缩进。\n");
/***程序终止***/
return 0;
}
6、保持缩进程度地一致性
6.1 缩进程度标识嵌套深度
- 有些程序员习惯根据语句地嵌套深度决定缩进深度,嵌套层数越多,相应需要缩进的字符数越多。
- 从可读性层面来说,这并不时一个好的方法。
- 总之,不要用缩进程度表示嵌套深度。
- 应该用相同的缩进字符数表示嵌套,如果嵌套层数太多,可以添加与嵌套深度相匹配的注释。以示区分。
if (counter1 == 1) { // 第一层if嵌套
if (counter2 == 10) { //第2层if嵌套
if (counter3 == 100) { //第3层if嵌套
if (counter4 == 1000) { //第4层if嵌套
......
} //第4层if嵌套结束
} //第3层if嵌套结束
} //第2层if嵌套结束
} //第1层if嵌套结束
7、选择合适的缩进程度
- 缩进多少才好呢?通常来说,4个字符是最合适的,也是最广为采纳的。
- 不管2个还是4个,缩进既不能过深,也不能过浅。这才是核心原则。
8、 不要编写突出形式的代码
- 不知道还有没有人这样写了,但我之前确实见过我的同学这样写过,他说是为了强调代码块内的内容:
if(num1 = num2) {
num1 = 20;
num2 = 50;
}
- 我劝,你加注释表强调吧。
- 从本质上来说,你把代码凸出来,和在草稿纸边缘以外写字是完全一样的。
9、小结
需要检查缩进的时间点:
- 程序完结之前;
- 与他人进行程序交接之前;
- 文件改写完成之后
- 看完这篇,相信你离规范编码又有了进步,慢慢积累,你可以的。