If statement 如果不是这样,还是早点回来
有时我喜欢使用早期返回语句来防止嵌套if语句,我发现这会导致代码可读性降低 我想知道是否有任何客观的或压倒性的普遍共识,以下哪种模式是更好的做法?我不认为这是一个主观的问题,因为我真正想问的是有一个近乎客观的偏好If statement 如果不是这样,还是早点回来,if-statement,return,code-structure,If Statement,Return,Code Structure,有时我喜欢使用早期返回语句来防止嵌套if语句,我发现这会导致代码可读性降低 我想知道是否有任何客观的或压倒性的普遍共识,以下哪种模式是更好的做法?我不认为这是一个主观的问题,因为我真正想问的是有一个近乎客观的偏好 void func() { if (a) { do b } else { do c } } 或 我会选择第一个版本。事实上,我在几年前就得到了一个冗长的解释 正如您现在所写的,这两个示例在功能上是相同的。如果a条
void func() {
if (a) {
do b
}
else {
do c
}
}
或
我会选择第一个版本。事实上,我在几年前就得到了一个冗长的解释 正如您现在所写的,这两个示例在功能上是相同的。如果
a
条件为真,则将执行第一个If
条件中的逻辑,函数将返回。但是,请仔细查看第二种情况:
void func() {
if (a) {
do b
return;
}
do c
}
现在,如果第一个
触发,函数将返回,否则c
将执行。然而,考虑到在某一点上,程序员决定出于某种原因重构该方法。如果他取出return
语句,那么c
的逻辑也将在a
为真时执行。这似乎有些牵强,但它可能比你想象的更容易发生。另一方面,如果使用完整的if-else
,则即使重构if
条件也不会导致c
逻辑同时求值。第一个更好。简单地说,它帮助另一个开发人员理解c编译是因为条件为false。它还可以防止其他人对代码进行破坏性的更改。也就是说,它们都是正确的,而且都可以很好地工作。坦率地说,我推荐第二种
-
- 第二个更容易理解
-
- 当其他人修改代码时,更容易理解是第一位的。
也许第一个在数学中更清楚,但在人类中却不清楚
我一直认为,如果可能,返回语句应该限制在函数末尾使用,因为它更容易阅读和理解流程。其他人可能不同意这一点,但这就是我选择第一个片段的原因。我认为它与此非常相似。我不同意,第一个选择肯定是不好的。
void func() {
if (a) {
do b
return;
}
do c
}