![C语言最佳实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/885/53286885/b_53286885.jpg)
上QQ阅读APP看书,第一时间看更新
1.4.2 空格、大括号位置及缩进
适当添加空格、不滥用空格,对提高代码的可读性和维护代码的整洁性具有很大的帮助。这方面的最佳实践便是采纳Linux内核编码风格的相关规定。
(1)单目运算符和++
、--
运算符的前后不加空格,例如像下面这样的写法是正确的:
int *p = (int *)&a; p++; --a;
像下面这样的写法是不正确的:
a ++; ++ p;
(2)函数名称,包括可按函数方式调用的关键字(如sizeof
)和宏的后面,不要加空格,例如像下面这样的写法是正确的:
call_me(sizeof(int), MAX(x, y));
其中,参数列表中的逗号之后应该添加空格。
像下面这样的写法是不正确的:
call_me (sizeof (int),MAX (x,y));
(3)不要在行尾添加空格。这一点很重要,但很容易被忽视,因为行尾的空格在视觉上是看不出来的。为此,可以修改编辑器的设置,显示行尾的空白字符,比如将行尾的空格显示为灰色的句点。
(4)双目运算符或多目运算符的前后,以及关键字(如if
、else
、for
)的后面一般需要添加空格,例如:
if (a && b) { }
但也有一些例外,比如双目的成员访问操作符(.
和->
)的前后不需要添加空格,例如:
temp->next = NULL;
除空格之外,有关大括号的位置,还有一个建议是遵循Linux内核编码风格的相关规定。相较于其他编码风格,Linux内核编码风格的相关规定最为简洁。但究竟是使用制表符还是使用空格进行缩进,以及缩进宽度是4个空格还是8个空格,则由读者自行决定。在实践中,相较于将if、while等语句后的左大括号({
)单独一行书写,笔者更喜欢将其置于行尾,如下所示:
int lots_of_args(int x, long y, short z, double a_double, float a_float) { int haha = 0; if (x < foo(y, z)) { haha = bar[4] + 5; } else { /* 笔者不太喜欢 } else { 这种写法 */ while (z) { haha += foo(z, z); z--; } haha = ++x + bar(); } return haha; }