JavaDoc的看起來好像沒什麼問題。清晰可理解。不要忘記添加名單有要創建和有是情緒化,否則該方法可能抱怨與討厭的例外。答案非常多。
但我建議你不要使用out
參數,除非你被迫這樣做(比如你必須實現第三方接口或者你必須使用JNDI)。
該方法被命名爲getNodes
,因此大多數程序員期望該方法返回一個數組或一組節點。但在這種情況下,該方法使用節點和整型填充兩個傳遞的列表。
所以,如果你可以自由選擇的方法簽名,我建議你聲明它是這樣的:
public List<O> getNodes(List<O> cl) {
List<O> result = pickAllNodesFromList(cl);
return result;
}
public List<O> getHolotypes(List<O> cl) {
List<O> result = pickAllHolotypesFromList(cl);
return result;
}
或聲明的一種特殊類型的類,如:
class CLTypes<O> {
List<O> nodes = new ArrayList<O>();
List<O> holotypes = new ArrayList<O>();
CLTypes(List<O> cl) {
nodes.addAll(pickAllNodes(cl));
holotypes.addAll(pickAllNodes(cl));
}
// getters for the nodes
// ...
// private methods to pick objects for source list
// ...
}
和落實方法是這樣的:
public CLTypes<O> getNodes(List<O> cl) {
return new CLTypes<O>(cl);
}
如果你需要返回兩個列表(如我從上面的評論讀),另一種簡單的解決方案可以被包裹在兩個列表中的地圖:
public Map<String, List<O>> getNodes(List<O> cl) {
Map<String, List<O>> result = new HashMap<String, List<O>>();
result.put("nodes", pickAllNodes(cl));
result.put("holotypes", pickAllHolotypes(cl));
return result;
}
就我個人而言,我嘗試避免出參數,而是返回一個包含什麼是out參數的對象。我發現代碼通常好得多。 – TofuBeer 2010-08-12 05:51:42
@TofuBeer我也是這樣,但是我不得不返回2個列表。兩種不同的方法在這裏是不可能的,所以這就是我所擁有的。返回一個列表並將另一個列表作爲外部參數傳遞。是恕我直言最糟糕的選擇。 – Tom 2010-08-12 05:54:36
您可以返回List []並記錄它將始終是大小2.或者您可以創建一個包裝2個列表的類(如結構體)。 – 2010-08-12 06:09:39