很多初学者的代码其实都不够“漂亮”,那是因为没有养成好的编码习惯。本篇博客以C语言为例,总结一些好习惯。其实,很多习惯都是肌肉记忆,举个例子:请你写一个程序,输入2个整数并输出它们的和。有些朋友可能写出来是这个样子。
#include<stdio.h>
int main()
{
int a=0;
int b=0;
int sum=0;
scanf("%d%d",&a,&b);
sum=a+b;
printf("%d\n",sum);
return 0;
}
我写这段代码,是在模仿有些朋友在初学的时候容易写成的样子。更有甚者,写成这个样子:
#include<stdio.h>
int main()
{
int a=0;
int b=0;
int sum=0;
scanf("%d%d",&a,&b);
sum=a+b;
printf("%d\n",sum);
return 0;
}
让人看的不太舒服。甚至可以让你更加不舒服:
#include<stdio.h>
int main()
{
int a,b,sum;scanf("%d%d",&a,&b);
sum=a+b;printf("%d\n",sum);
return 0;
}
这是什么感觉?嗯……你为啥不都写在一行呢?下面我来谈谈好的写法是怎样的。
空格
首先改进一下第一种写法,先加一些空格:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int sum = 0;
scanf("%d %d", &a, &b);
sum = a + b;
printf("%d\n", sum);
return 0;
}
我在#include和头文件之间、“双目操作符”两端、逗号后面、scanf的两个%d之间都加上了空格,感觉舒服一点了。这就是今天我要说的第一个习惯:在合适的地方添加空格!
什么是合适的地方呢?双目操作符两端,逗号后面,分号后面,关键字后面都可以添加空格。比如经典的for循环,糟糕的写法是:
for(int i=0;i<10;++i)
{}
首先,for作为关键字,后面可以添加空格,分号后面也可以添加空格,如下:
for (int i=0; i<10; ++i)
{}
等号和小于号属于双目操作符,两端也可以添加空格:
for (int i = 0; i < 10; ++i)
{}
这样是不是好看多了?
注意:++是单目操作符,++和i之间不要添加空格,多余的空格显得画蛇添足,多此一举。
空行
除此之外,可以在合适的地方添加空行,比如函数和函数之间,函数内部不同逻辑的代码之间。比如:
void test1()
{
printf("test1\n");
}
void test2()
{
printf("test2\n");
}
void test3()
{
printf("test3\n");
}
前面的例子中,头文件的包含和main函数之间可以添加空行。在main函数内部,变量的定义,输入值并且计算输出,main函数的返回属于不同的逻辑,中间可以添加空行。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int sum = 0;
scanf("%d %d", &a, &b);
sum = a + b;
printf("%d\n", sum);
return 0;
}
缩进
顺带一提,“缩进”也很重要。大括号内部的逻辑都要向右缩进,比如:
if (flag)
{
printf("true\n");
}
当然,如果省略大括号的情况,也要缩进。
if (flag)
printf("true\n");
过多的缩进也不好。比如switch case语句中,case一般和switch的大括号对齐,而不缩进。
switch (n)
{
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
default:
printf("default\n");
break;
}
自然,在前面的例子中,main函数内部的语句都要添加缩进。
注释
还有最后一点:记得写注释!注释是用来解释代码的,要放在解释的代码的上边或右边,比如:
#include <stdio.h>
int main()
{
// 定义变量
int a = 0;
int b = 0;
int sum = 0; // 存放和
// 输入数据
scanf("%d %d", &a, &b);
// 计算
sum = a + b;
// 输出数据
printf("%d\n", sum); // 输出后换行
return 0;
}
如果注释在单独的一行,可以认为这一行是一个“空行”,就不用添加额外的空行了。当然,你想添加也行,比如:
#include <stdio.h>
int main()
{
// 定义变量
int a = 0;
int b = 0;
int sum = 0; // 存放和
// 输入数据
scanf("%d %d", &a, &b);
// 计算
sum = a + b;
// 输出数据
printf("%d\n", sum); // 输出后换行
return 0;
}
总结
- 双目操作符两端,逗号后面,分号后面,关键字后面都可以添加空格。
- 函数和函数之间,函数内部不同逻辑的代码之间可以添加空行。
- 大括号内部的逻辑都要向右缩进,但是过多的缩进也不好。
- 添加注释,注释是用来解释代码的。
感谢大家的阅读!