前言
众所周知,压行这种不要钱的乐趣,压了还方便调试,不压白不压。
压行的好处
压行主要有如下几点好处:
- 适当的压行可以使代码更整齐、美观
- 可以方便调试(比如加断点,不压行要翻很久,压了行一眼就能看到)
可以装x
压行的正确操作?
正确使用逗号运算符
如果很多条语句压成一行,中间却用分号隔开,那么显然是不美观的。比如下面的代码:
x^=y;y^=x;x^=y;
强迫症看了要跳楼,普通人看了也要被逼死。
关键是分号打起来也不方便......
于是我们把中间的分号省去。
x^=y,y^=x,x^=y;
这样就美观多了。
避免不必要的空格
为了让每一行能容纳更多的语句,打太多的空格显然是不好的。
比如下面的语句:
int t = a; a = b, b = t;
看上去很长,其实去掉不必要的空格就这么一点点:
int t=a;a=b,b=t;
缩短了几乎三分之一。
所以以下空格尽量删去:
- 括号内外的空格
- 运算符边、分号边的空格
- 重复的空格
适当使用宏定义
很多语句在程序中多次出现,但是很短,没必要写个函数。这时候用宏定义就成了最佳选择。
比如 u->son[k]
在程序中大量出现,显然影响了美观度,于是考虑定义个宏 s(u,k)
来代表它,这样可以提高代码美观度,顺便缩短长度。
为了使代码更美观,建议将宏定义集中写。
对于函数
很多函数其实可以压成一行,比如:
inline int max(int x,int y){
return x<y?y:x;
}
可以压成
inline int max(int x,int y){return x<y?y:x;}
这样可以大大缩短代码行数。
但是很多容易出错、码量大的就不建议压成一行。
对于大括号
大括号可以和其它的语句写在一行。
比如:
if(...){
...
}
else{
...
}
可以压成
if(...){
...
}else{
...
}
如果可以的话,还可以压成
if(...){...}else{...}
但是不提倡这么压:
if(...){
if(...){
...
}}
因为这样使同一对大括号的缩进级别不同,大大降低了代码的美观度。
保留缩进
这个不用说了。
尽量不要拆分语句
这个更不用说了。
如果不得不拆分的,建议让拆分后的两条语句对齐。
控制每行最大字数、平均字数
个人建议,一般每行最大字数控制在 $130$ 以内,平均字数和最大字数的差控制在 $50$ 以内。