2015-06-17 41 views
1

例如,我有一個名爲「filterTop3Items(List list)」的方法。我應該返回結果還是返回無效?我應該返回值還是使用void?

public List<Item> filterTop3Items(List<Item> list>; 

public void filterTop3Items(List<Item> list); 

第二個將修改的輸入參數。

就可維護性而言,最佳做法是什麼?

編輯:
對於情況1:

List<Item> list = new List<Item>(); 
... (add item multiple times) ... 

List<Item> filteredList = filterTop3Items(list); 
... (process filteredList) ... 

對於情況2;

List<Item> list = new List<Item>(); 
... (add item multiple times) ... 

filterTop3Items(list); 
... (process list) ... 

對於情況2,如果您試圖瞭解代碼,您必須跟蹤操作以瞭解列表中的內容。對於案例1,讀者可以通過查看變量名「filteredList」來理解代碼。這是可維護性問題之一。

+3

這取決於你的電話是否想改變他們的參數。 – SLaks

+1

如果你'返回'你意味着你返回一份副本。如果你返回void,那你就是說這個方法改變了輸入。所以問題是你的方法做什麼? –

+2

答案取決於您的要求,而不是可維護性。然而,要考慮的重要一點是*其他*可能會引用原始列表。 –

回答

-1

這兩種方法都可以工作,儘管在Java中,我認爲第一種方法是最常用的。

相關問題