Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 如果不是这样,还是早点回来_If Statement_Return_Code Structure - Fatal编程技术网

If statement 如果不是这样,还是早点回来

If statement 如果不是这样,还是早点回来,if-statement,return,code-structure,If Statement,Return,Code Structure,有时我喜欢使用早期返回语句来防止嵌套if语句,我发现这会导致代码可读性降低 我想知道是否有任何客观的或压倒性的普遍共识,以下哪种模式是更好的做法?我不认为这是一个主观的问题,因为我真正想问的是有一个近乎客观的偏好 void func() { if (a) { do b } else { do c } } 或 我会选择第一个版本。事实上,我在几年前就得到了一个冗长的解释 正如您现在所写的,这两个示例在功能上是相同的。如果a条

有时我喜欢使用早期返回语句来防止嵌套if语句,我发现这会导致代码可读性降低

我想知道是否有任何客观的或压倒性的普遍共识,以下哪种模式是更好的做法?我不认为这是一个主观的问题,因为我真正想问的是有一个近乎客观的偏好

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
}