有时候我喜欢使用早期的return语句来阻止if语句的嵌套,我发现它会使代码的可读性降低。
我想知道是否存在任何客观或压倒性的普遍共识,以下两种模式中的哪一种更好的做法?我不认为这是一个主观问题,因为我真正想的是有一个接近客观的偏好。
void func() {
if (a) {
do b
}
else {
do c
}
}
或
void func() {
if (a) {
do b
return;
}
do c
}
答案 0 :(得分:1)
坦率地说,我建议第二个。
答案 1 :(得分:0)
我会选择第一个版本。几年前,我对这个问题进行了长时间的解释。
这两个例子,就像你现在写的那样,在功能上是相同的。如果a
条件为真,则第一个if
条件中的逻辑将执行,函数将返回。但是,仔细看看第二种情况:
void func() {
if (a) {
do b
return;
}
do c
}
现在,如果第一个if
触发,该函数将返回,否则c
将执行。但是,考虑到程序员在某些时候出于某种原因决定重构该方法。如果他要取出return
语句,那么如果c
为真,则a
的逻辑也执行。这可能看起来很牵强,但它可能比你想象的更容易发生。另一方面,如果使用完整的if-else
,那么即使是if
条件的重构也不会导致c
逻辑同时进行评估。
答案 2 :(得分:0)
第一个更好。简单地说,它有助于另一个开发人员理解c编译,因为条件是错误的。它还可以防止其他人对您的代码进行破坏性更改。也就是说,它们都是正确的,并且都可以正常工作