Java 分支语句:在for/while循环中最好是中断还是返回?

Java 分支语句:在for/while循环中最好是中断还是返回?,java,branch,cycle,Java,Branch,Cycle,显然,只有在方法可以立即退出的情况下才使用return for (...) { return; } 或 哪一个更好?你给出的两个例子并不完全相同,所以很难说哪一个更好。以下两种方法的作用稍有相似: for (Foo foo: foos) { // ... if (ok) { return foo; } } return null; 与: Foo result = null; for (Foo foo: foos) { // ... if (ok

显然,只有在方法可以立即退出的情况下才使用return

for (...) {
   return;
}


哪一个更好?

你给出的两个例子并不完全相同,所以很难说哪一个更好。以下两种方法的作用稍有相似:

for (Foo foo: foos) {

    // ...

    if (ok) { return foo; }
}
return null;
与:

Foo result = null;

for (Foo foo: foos) {

    // ...

    if (ok) {
        result = foo;
        break;
    }
} 

return result;

在这种情况下,我推荐第一种,因为它更简单。不太可能存在显著的性能差异。有些人更喜欢第二个,因为他们只希望每个函数都有一个返回,但我认为坚持这个规则并不总是一个好主意。有时,多个返回语句会让事情变得更清楚。

我宁愿建议使用中断方法。它看起来像更多的代码,但更容易理解。而且,以后进行更改更容易。为了清晰起见,您可以选择带标签的循环

显然,只有在方法可以立即退出的情况下,才能使用
返回

for (...) {
   return;
}
你已经回答了你自己的问题。这两种方法具有不同的语义,不能真正互换,
return
变量仅适用于更具体的场景


…因此,正是在这些特定场景中,您应该使用
return
变量。其意图是显而易见的,因此有助于提高可读性。如果在
return
足够时使用
break
,那么读者必须花更多的时间来了解
break
之后会发生什么。当没有重大事件发生时,
返回
会很快更清楚地传达这一点。

相关:中断和返回有不同的行为,所以问哪个“更好”并没有真正的答案