关于K&R代码风格中的大括号

第二中只不过是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(count>100)

{

count=0;

reset=true;

}

再就是,如果if中的条件多行书写时,K&R风格的括号也很容易引起误解

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风格的示例代码。很奇怪,为什么还有那么多的人在使用这种风格。

你可能感兴趣的:(c)