2011-02-23 133 views
4

有在某些類中的方法從方法返回與返回指令

public void addAdditionalData(List<PairOfKeyString> data, List<Text> comments)

從數據列表信息是用於此方法必需 - 這意味着如果數據爲空或在執行該方法空沒有邏輯。 我有兩個選擇怎麼做

首先

if (data != null && !data.isEmpty()) { do somelogic here }

if(data == null || data.isEmpty()) { 
    return; 
} 

你會選擇哪一種?爲什麼? 謝謝!

+4

絕對對於http一個問題://codereview.stackexchange。 com/ – Riduidel 2011-02-23 09:43:33

回答

6

第二個選項肯定是更好的,因爲它不會增加代碼嵌套,更容易閱讀和理解。您還可以在而不是執行操作時添加更多規則,這不會影響實施的重要部分。

+0

我同意代碼嵌套,更容易閱讀點,但不會返回代碼看起來像goto樣式? – artjomka 2011-02-23 09:51:27

3

我更喜歡第二個選項:

if(data == null || data.isEmpty()) { 
    return; 
} 

正如你可以後添加你的邏輯,而不必封裝在if語句使你的代碼的可讀性所有的代碼,讀者會看到它作爲一個分開的部分代碼。

這將使您在未來能夠中心分離和擴展必要的所有條件,這將導致您離開例程而不是嵌套if嵌套。考慮到費率代碼是寫入:閱讀約1:10

1

我通常更喜歡& &運算符,如果布爾代數不會比||更復雜。表達。
原因:

  1. 只有一種情況下(出四)檢查精神上if語句進入。
  2. 我嘗試避免方法中的返回/中斷表達式,以使代碼流更清晰。
1

簡單的方法:

如果( Collections.emptyList()等於(數據)。) {}

+0

正如我從集合源代碼看到,如果數據== null,那麼結果將是錯誤的,但如果數據是空的,那麼結果是真實的,這不是我正在尋找的 – artjomka 2011-02-24 08:37:13

+0

嗯...足夠公平! – 2011-02-25 06:00:48