分支声明:在for / while循环中更好地休息或返回?

时间:2010-07-05 10:03:55

标签: java branch cycle

显然只有在方法可以立即退出的情况下返回

for (...) {
   return;
}

for () {
   break;
}

哪个更好?

3 个答案:

答案 0 :(得分:3)

你给出的两个例子并不完全等同,所以说哪个是更好的风格有点难。以下是两种方法,它们的作用略微相似:

for (Foo foo: foos) {

    // ...

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

对战:

Foo result = null;

for (Foo foo: foos) {

    // ...

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

return result;

在这种情况下,我会推荐第一个,因为它更简单。不太可能存在显着的性能差异。有些人更喜欢第二种,因为他们只想在每个功能中获得一次回报,但我认为坚持这一规则并不总是一个好主意。有时多个返回语句会使事情变得更加清晰。

答案 1 :(得分:0)

我宁愿建议突破方法。它看起来像更多的代码,但更容易理解。此外,稍后进行更改也更容易。为清晰起见,您可以使用带标签的循环。

答案 2 :(得分:0)

  

显然仅在方法可以立即退出

的情况下使用return

你已经回答了自己的问题。这两个语义具有不同的语义,并且实际上不可互换,return变体仅适用于更具体的场景......

...因此正是在那些特定场景中您应该使用return变体。目的很明显,因此它具有更好的可读性。如果您在break足够时使用return,则读者必须花费更多时间来弄清break之后发生的事情。当没有任何重大事件发生时,return会很快传达出来。