第二中只不过是K & R风格,具体参考《The C Programming Language》。
当时的屏幕没现在这么大,好像只有24 x 80,所以,推荐每行不超过79个字符,且大括号跟在判断语句后面。
现在屏幕没这么小了,但Linus仍然推荐Linux kernel使用K & R风格去写。就是这样,没有什么可争论的
标准的K&R风格应该是这样:
if(count>100){
count=0;
reset=true;
}
但是修改代码的时候竟然看到这样的代码段:if(count>100){
count=0;
reset=true;
}
如果稍微不注意,那么reset=true;这个就以为在if以外了。可能脑海中第一的反应代码应该是if(count>100)
count=0;
reset=true;
这样的样子。再如果,if中的代码多一些,尤其是多于一屏时那必将是一个噩梦的开始。但是如果{单独一行的话,效果要好一些。if(count>100)
{
count=0;
reset=true;
}
这样,即使是reset=true;没有缩进,那么也比较容易发现。另外,抵触K&R风格的大括号的原因是调试不方便,例如我调试的时候想忽略if,那么K&R风格的代码只能这么做:/*if(count>100)*/{
count=0;
reset=true;
}
如果习惯这种C风格的注视的话,那还好。但是,不管是习惯还是不习惯,都不如单独行的大括号来的方便再就是,如果if中的条件多行书写时,K&R风格的括号也很容易引起误解//if(count>100)
{
count=0;
reset=true;
}
if(count>100 &&
reset==false){
count=0;
reset=true;
}
起码reset==false很容易让人误解为if内的命令。这就不如单独行的大括号来的利落if(count>100 &&
reset==false) {
count=0;
reset=true;
}
另外,单独行的大括号还有一个用处,例如当if段很长时,例如代码有几屏的时候,你可以把鼠标放在一个括号上,然后滚动屏幕去找对应的另外一个括号。但是如果K&R风格就没有这么方便了。其实,之前也关注过一些书籍。基本上没有使用K&R风格的示例代码。很奇怪,为什么还有那么多的人在使用这种风格。