【问题标题】:if-else or early return [closed]if-else 或提前返回 [关闭]
【发布时间】:2017-02-21 23:45:53
【问题描述】:

有时我喜欢使用提前返回语句来防止嵌套 if 语句,我发现这会降低代码的可读性。

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

void func() {
    if (a) {
        do b
    }    
    else {
        do c
    }
}

void func() {
    if (a) {
        do b
        return;
    }

    do c
}

【问题讨论】:

标签: if-statement return code-structure


【解决方案1】:

我会选择第一个版本。实际上,几年前我已经对此进行了冗长的解释。

正如您现在所写的,这两个示例在功能上是相同的。如果a 条件为真,则第一个if 条件中的逻辑将执行,函数将返回。但是,仔细看看第二种情况:

void func() {
    if (a) {
        do b
        return;
    }

    do c
}

现在,如果第一个 if 触发,函数将返回,否则 c 将执行。然而,考虑到在某个时刻,程序员出于某种原因决定重构该方法。如果他要取出return 语句,那么如果a 为真,c 的逻辑会执行。这似乎有些牵强,但它可能比您想象的更容易发生。另一方面,如果您使用完整的if-else,那么即使重构if 条件也永远不会导致c 逻辑同时评估。

【讨论】:

    【解决方案2】:

    第一个更好。简而言之,它帮助其他开发人员了解 c 编译是因为条件为假。它还可以防止其他人对您的代码进行破坏性更改。也就是说,它们都是正确的,并且都可以正常工作

    【讨论】:

    【解决方案3】:

    坦率地说,我推荐第二个。

      1. 第二个更清晰易懂
      1. 当其他一些修改代码更容易理解是第一位的。 也许第一个在数学中更清楚,但在人类中却不是。

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2021-08-31
      • 2013-02-15
      相关资源
      最近更新 更多