2017-02-13 45 views
0

我想編寫乾淨和快速的代碼來評估一些條件,如果條件爲真並執行操作並返回該條件值。java如果行動並返回

我具有以下選項到目前爲止:

選項1:

public boolean method() { 
    if (...condition...) { 
     action(); 
     return true; 
    } else { 
     return false; 
    } 
} 

選項2:

public boolean method() { 
    boolean actionNecessary = ...condition...; 
    if (actionNecessary) { 
     action(); 
    } 
    return actionNecessary; 
} 

選項3:

public boolean method() { 
     return ifDoReturn(...condition...,() -> { 
      action(); 
     }); 
    } 

隨着helper方法:

public static boolean ifDoReturn(boolean condition, Runnable action) { 
    if (condition) { 
     action.run(); 
    } 
    return condition; 
} 

第一個選項是最長的,第二個是短也快,第三個是最短的,但棘手的,沒有編譯器的優化也慢之一。

感謝所有幫助

+0

這取決於很多因素。貴公司是否有遵循的標準?誰會維護?這是一次性計劃嗎?沒有好的迴應,因爲它是個案的基礎。 – AntonH

+0

第二個是簡單易讀。用它。 – f1sh

+0

是的,但可能適當的名稱幫助方法可以顯着幫助。 – Swocka

回答

1

「過早的優化是所有罪惡的根源。」 - 唐納德克努特

我相信你正在推翻這一點。 JVM足夠聰明,可以處理微不足道的「微優化」。在簡單的if...else邏輯中,通常應該遵循他們團隊制定的軟件開發標準。無論採用何種方法,您都很難找到顯着的性能提升。如果代碼經常被調用,那麼Just-in-Time編譯器(「JIT」)會將它編譯爲目標代碼。

大家都說,在我看來,選項#2是最清楚的。

對於它的價值,here是對Java優化技術的深入研究;最重要的是,涵蓋了什麼時候和爲什麼要優化

+0

感謝大家爲#2投票。無論如何,我錯過了更多的語法糖來表達Java中很好的常見模式。我接受這個答案,因爲它只是回答:)。 – Swocka

+0

查閱Joshua Bloch的Effective Java書以及Robert Martin的Clean Code。大部分值得使用的Java團隊應遵循這些經驗法則。 – Keith