2013-09-26 90 views
-3

考虑一个代码:返回一个while循环vs休息

两个返回语句,一个在while循环中,另一个在while循环中。没有休息

while (node != null) { 
    if (node.item == 5) { 
     return node; 
    } 
    node = node.next; 
} 
return node; 

在while循环中有一个中断的单个返回。

while (node != null) { 
    if (node.item == 5) { 
     break; 
    } 
    node = node.next; 
} 
return node; 

是否有任何强有力的论据来遵循特定的方法而不是其他的?

+0

http://programmers.stackexchange.com/questions/142144/whiletrue-and-loop-breaking-anti-pattern – asawyer

+1

没有正确/错误的答案 - 它只是意见。话虽如此,我第一眼看到你的“回归”版本让我想到了“但现在第二次回到循环之外是毫无意义/多余的......”然后我眨了眨眼睛,再次看了看。所以我个人去'break'版本 –

+1

这不是真正的Stack Overflow问题,因为它没有一个答案,并鼓励讨论(即噪音)。两种方法都有其优点。 –

回答

1

如果该方法的唯一目的是查找匹配的节点,则第一个将会起作用。如果你想在while循环之外但是在同一个方法内使用该节点,你需要使用第二种方法。

也就是说,我更喜欢第一种方法,并认为单一职责原则会鼓励您制定专门用于获取匹配节点的方法。

尽管如此,我还是会想return null,这样读者就可以更容易理解,如果您终于完成方法,那么这就是您要返回的实际内容。

+0

关于'return null'的非常好的一点。 – erickson