Votre javadoc regarde bien pour moi. clair et compréhensible. Ne pas oublier d'ajouter que les listes ont à créer et ont pour être moodifiable, sinon la méthode pourrait se plaindre avec de vilaines exceptions. Voilà pour la réponse.
Mais je vous suggère de ne pas utiliser les paramètres out
à moins que vous ne soyez obligé de le faire (comme si vous deviez implémenter des interfaces tierces ou utiliser JNDI).
La méthode est nommée getNodes
donc la plupart des programmeurs s'attendent à ce que la méthode renvoie un tableau ou une collection de noeuds. Mais dans ce cas, la méthode remplit deux listes passées avec des nœuds et des holotypes.
Donc, si votre libre de choisir la signature de la méthode, je vous suggère de le déclarer comme ceci:
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;
}
ou déclarer un type spécial pour la classe, comme:
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
// ...
}
et mettre en œuvre la méthode comme ceci:
public CLTypes<O> getNodes(List<O> cl) {
return new CLTypes<O>(cl);
}
Si vous avez besoin de retourner deux listes (comme je l'ai lu dans les commentaires ci-dessus), une autre solution facile pourrait être envelopper les deux listes dans une carte:
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;
}
Personnellement, j'essaie d'éviter les paramètres et de retourner à la place un objet qui contient les paramètres out. Je trouve que le code est généralement beaucoup mieux de cette façon. – TofuBeer
@TofuBeer Moi aussi, mais je ne peux pas le faire quand je dois retourner 2 listes. Deux méthodes séparées ne sont pas possibles ici, donc c'est ce que j'ai. Renvoyer une liste et passer l'autre en tant que paramètre out. est la pire option à mon humble avis. – Tom
Vous pouvez retourner List [] et documenter qu'il sera toujours de taille 2. Ou vous pouvez créer une classe qui enveloppe 2 listes (comme une structure). –