我经常看到一段类似于以下的代码(语言并不重要):
private Result method() {
var result = initialValue;
if (condition) {
result = otherResult;
}
return result;
}
这是一个有点重构的版本:
private Result method() {
if (condition) {
return otherResult;
}
return initialValue;
}
作者所说的第一个解决方案的优点是方法中的单一返回点。从我的观点来看,尽管有两个返回点,但没有额外的变量,第二个变量会好得多。同样在条件为true
的情况下,result
的值变为设置两次。
这里有任何额外的利弊吗?不过什么案例更好?
答案 0 :(得分:0)
无论您编写代码的方式如何,编译器都会尝试生成最佳/优化的代码。您可以尝试查看生成的汇编代码,看看它是否确实有所不同。但从代码简单的角度来看,第一个看起来更好。
答案 1 :(得分:-1)
这取决于你真正做的事情。在这个简化的例子中,它可能并不明显,但如果你在检查条件后需要做某事而不管结果是什么,第一种方法会更好。
这在第二个版本中是不可能的,因为函数立即返回。如果条件通过,则不会执行在if块之后写入的任何代码。