2012-12-02 28 views
-2

我有一個編碼風格的問題。下面是兩個循環函數,它們做相同的事情,但是有一個稍微不同的循環退出技術。我只是想了解你們喜歡什麼。退出循環編碼風格

我個人比較喜歡第一個。我不明白爲什麼我應該聲明一個新的變量,並且當我知道沒有其他任何事情要做時打破一個循環。

private SomeObj getSomeObj(ArrayList<SomeObj> items, String type) 
{ 
    for (SomeObj someObj : items) { 
     if (someObj.getField().equals(type)) { 
      return someObj; 
     } 
    } 

    return null; 
} 


private SomeObj getSomeObj(ArrayList<SomeObj> items, String type) 
{ 
    SomeObj found = null 
    for (SomeObj someObj : items) { 
     if (someObj.getField().equals(type)) { 
      found = someObj; 
        break; 
     } 
    } 

    return found; 
} 
+3

這種問題是不歡迎在stackoverflow,你應該問在http://programmers.stackexchange.com/ –

+1

這裏不應該提出討論類型的問題。 – hologram

回答

1

兩者有不同的目的。它們不是相互替代的。

第一個來自方法

第二個從循環NOT方法出來。

讓我們來說說是否有一些代碼在for循環之後操作SomeObj,那麼結果將會從第一個方法到第二個方法有所不同。

0

在任何情況下,兩種方法都無法取代彼此。假設你想在循環結束後執行代碼,那麼返回不能爲你做,反之亦然。在你的情況下,兩者都可以使用,但不是在任何情況下。

語句for循環之後,你不想要執行得到與突破執行

private SomeObj getSomeObj(ArrayList<SomeObj> items, String type) 
{ 
    SomeObj found = null 
    for (SomeObj someObj : items) { 
     if (someObj.getField().equals(type)) { 
      found = someObj; 
        break; 
     } 
    } 
    //Statements you do not want to execute get executed with break 

    return found; 
} 

for循環,要執行後聲明沒有得到與返回執行

private SomeObj getSomeObj(ArrayList<SomeObj> items, String type) 
{ 
    SomeObj found = null 
    for (SomeObj someObj : items) { 
     if (someObj.getField().equals(type)) { 
      found = someObj; 
        return; 
     } 
    } 
    //Statements you want to execute do not get executed with return 

    return found; 
} 
+0

你可以聲稱有很多不同的可能場景,但這並不能回答這個問題。 – jtahlborn

+0

請停止在代碼塊中放置散文的隨機塊! –

+0

你是否要求在代碼中的評論? – Adil

0

我更喜歡第一個。一般來說,我更喜歡早期退出方法,因爲它往往會減少嵌套。