单个返回点或多个内联返回?

时间:2015-03-23 11:17:59

标签: coding-style

我经常看到一段类似于以下的代码(语言并不重要):

private Result method() {
    var result = initialValue;

    if (condition) {
        result = otherResult;
    }

    return result;
}

这是一个有点重构的版本:

private Result method() {

    if (condition) {
        return otherResult;
    }

    return initialValue;
}

作者所说的第一个解决方案的优点是方法中的单一返回点。从我的观点来看,尽管有两个返回点,但没有额外的变量,第二个变量会好得多。同样在条件为true的情况下,result的值变为设置两次。 这里有任何额外的利弊吗?不过什么案例更好?

2 个答案:

答案 0 :(得分:0)

无论您编写代码的方式如何,编译器都会尝试生成最佳/优化的代码。您可以尝试查看生成的汇编代码,看看它是否确实有所不同。但从代码简单的角度来看,第一个看起来更好。

答案 1 :(得分:-1)

这取决于你真正做的事情。在这个简化的例子中,它可能并不明显,但如果你在检查条件后需要做某事而不管结果是什么,第一种方法会更好。

这在第二个版本中是不可能的,因为函数立即返回。如果条件通过,则不会执行在if块之后写入的任何代码。