在java中設計一個有更多參數(例如五個參數)的方法是不是很好?我們有更多參數的方法是否好?
public List<Node> loadByParentAndNeighbor(Map<String, Object> properties, String parentLabel, String neighborLabel, String parentRelation, String neighborRelation) {
return null;
}
在java中設計一個有更多參數(例如五個參數)的方法是不是很好?我們有更多參數的方法是否好?
public List<Node> loadByParentAndNeighbor(Map<String, Object> properties, String parentLabel, String neighborLabel, String parentRelation, String neighborRelation) {
return null;
}
太多參數被認爲是不好的做法,應儘可能避免。
的原因是,如果你有以下功能:
public void addUser(String username, String firstname, String lastname)
這是很容易調用函數時混淆參數(是第一個參數姓名或用戶名?)。
addUser("johnd", "John", "Doe");
爲了解決這個問題,當你得到太多的時候總是最好對參數進行分組。例如,與成員firstname
和lastname
一起稱爲Name
的類。
Name name = new Name("John", "Doe");
addUser("johnd", name);
這個問題還用更少的參數出現(如在我的例子),但更多的,尤其是當有許多相同類型的,它會逐漸變差。
-1情況下:如果參數無關,則它們不能被放入一個容器中(如一個列表),並且傳遞給此方法。因此,可接受的有一個方法與幾個參數。
情況-2:如果參數相關。例如,如果一個對象有10個字段,並把它們的5被傳遞到的方法,那麼這將是吸塵器更可讀傳遞對象本身(而不是其參數的5個)。
在我發佈它的這個方法中,parentLabel和parentRelation是相關的,neighborLabel和neighborRelation是相關的。 我可以把它們放在地圖和方法中會有三個地圖參數。 好不好? – user3807246
@ user3807246 - 這更像是一個設計問題。除非它顯着簡化了* something *,否則你不應該傳遞超出方法需要的內容(技術上)。領域是如何相關的? – TheLostMind
這取決於該方法在做什麼。爲什麼它會很糟糕? –
爲什麼要創建一個需要5個參數並返回'null'的方法? :P – alfasin
可能重複的[當一個方法有太多的參數?](http://stackoverflow.com/questions/2244860/when-a-method-has-too-many-parameters) – alfasin