2014-07-16 18 views
1

在java中設計一個有更多參數(例如五個參數)的方法是不是很好?我們有更多參數的方法是否好?

public List<Node> loadByParentAndNeighbor(Map<String, Object> properties, String parentLabel, String neighborLabel, String parentRelation, String neighborRelation) { 
    return null; 
} 
+4

這取決於該方法在做什麼。爲什麼它會很糟糕? –

+1

爲什麼要創建一個需要5個參數並返回'null'的方法? :P – alfasin

+0

可能重複的[當一個方法有太多的參數?](http://stackoverflow.com/questions/2244860/when-a-method-has-too-many-parameters) – alfasin

回答

0

太多參數被認爲是不好的做法,應儘可能避免。

的原因是,如果你有以下功能:

public void addUser(String username, String firstname, String lastname) 

這是很容易調用函數時混淆參數(是第一個參數姓名或用戶名?)。

addUser("johnd", "John", "Doe"); 

爲了解決這個問題,當你得到太多的時候總是最好對參數進行分組。例如,與成員firstnamelastname一起稱爲Name的類。

Name name = new Name("John", "Doe"); 
addUser("johnd", name); 

這個問題還用更少的參數出現(如在我的例子),但更多的,尤其是當有許多相同類型的,它會逐漸變差。

1

-1情況下:如果參數無關,則它們不能被放入一個容器中(如一個列表),並且傳遞給此方法。因此,可接受的有一個方法與幾個參數。

情況-2:如果參數相關。例如,如果一個對象有10個字段,並把它們的5被傳遞到的方法,那麼這將是吸塵器可讀傳遞對象本身(而不是其參數的5個)。

+0

在我發佈它的這個方法中,parentLabel和parentRelation是相關的,neighborLabel和neighborRelation是相關的。 我可以把它們放在地圖和方法中會有三個地圖參數。 好不好? – user3807246

+0

@ user3807246 - 這更像是一個設計問題。除非它顯着簡化了* something *,否則你不應該傳遞超出方法需要的內容(技術上)。領域是如何相關的? – TheLostMind

相關問題