2013-09-26 88 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