前言
我认为好的编程规范能够很大程度上提高代码的可读性、可维护性和质量,虽然现在的大多数编译器可以按照这些规范将你的代码调整的更加美观,但我觉得如果能够自己了解这些规范能够会更好,不仅能够体现你的专业性,而且当你在一些没有这些功能的编译器上也能写出一段风格良好的代码。这篇文章我将简单的介绍一些简单的、良好的编程风格。
一、空行
空行起着分隔程序段落的作用。适当的使用空行将使程序的布局更加清晰。
这是一段简单的代码,实现了两个正整数的相加:
#include <stdio.h>
//空行
int Add(int x, int y)
{
return x + y;
}
//空行
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
//空行
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
//空行
if (num1 <= 0 || num2 <= 0)
{
printf("输入错误!\n");
}
else
{
sum = Add(num1, num2);
printf("结果为%d\n", sum);
}
//空行
return 0;
}
在这段代码中添加了五处空行:
- 第一处空行加在头文件之后,我觉得这个无需赘述;
- 第二处空行加在Add函数和主函数之间,这是为了更清晰地区分函数的边界;
第一处和第二处的空行是放在函数外部的,后面的空行是放在函数内部的 - 第三处空行加在声明变量之后,这样能让读者更容易地识别出变量声明的范围;
- 第四处和第五处空行分别放在了 if-else 语句前后,这样能更清晰的划分代码块。
空行的作用大体就是这几种,需要注意的是,过多或过少的空行都可能会降低代码的可读性。因此,在使用空行时,要根据具体情况和个人偏好来决定适当的使用数量。
二、代码行
一行代码只做事情,不要出现一行代码定义多个变量或书写一整个循环语句这样的情况,这样的代码观感和可读性是非常差的,并且也很不利于添加注释。
三、空格
空格的使用比较广泛,有些地方必须使用空格,不然就会报错,
int main()
{
printf("Hello World!\n");
return 0;
}
例如在这里如果在 return 和 0 之间不添加空格的话,这个程序就无法运行,这种类型的空格也不过多赘述,我们主要讨论一下那些不影响程序运行结果的空格。
我们就上面的代码来分析:
- 在 if、for、while 等关键字之后应留一个空格再跟左括号,以突出关键字
if (num1 <= 0 || num2 <= 0)
{
printf("输入错误!\n");
}
- ‘,’之后要留空格
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2);
printf("结果为%d\n", sum);
- 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,等二元操作符的前后应当加空格
if (num1 <= 0 || num2 <= 0)
{
printf("输入错误!\n");
}
四、对齐
这里我们直接来看代码,仍然以上面的代码为例:
if (num1 <= 0 || num2 <= 0)
{
printf("输入错误!\n");
}
else
{
sum = Add(num1, num2);
printf("结果为%d\n", sum);
}
这段代码有些初学者会写成这样:
if (num1 <= 0 || num2 <= 0) {
printf("输入错误!\n");
}
else {
sum = Add(num1, num2);
printf("结果为%d\n", sum);
}
这两段代码一比较相信大家可以看出来,程序中左括号和右括号对齐能让代码的逻辑更加清晰。
五、注释
- 注释的位置应与被描述的代码相邻,一般放在代码的上方或右方;
- 注释是为了梳理逻辑或是为了让读者更好的阅读代码,所以不可过多;
- 注释应当准确、易懂,错误的注释不但无益反而有害;
我们以上面的代码为例来添加注释:
#include <stdio.h>
//定义函数用以计算
int Add(int x, int y)
{
return x + y;
}
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
//输入
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
//检查输入合法性
if (num1 <= 0 || num2 <= 0)
{
printf("输入错误!\n");
}
else
{
//计算并输出
sum = Add(num1, num2);
printf("结果为%d\n", sum);
}
return 0;
}
结语
这里只是简单的介绍了一些编程规范,大部分内容来自于《高质量 C++/C 编程指南》这本书中,如果想要深入学习,推荐大家下去自己去看一下这本书。
链接: link