J'ai du mal à trouver moyen de factoriser correctement ce code afin qu'il y aurait aussi peu de code en double que possible, j'ai deux ou trois méthodes comme celui-ci (pseudocode):Comment refactoriser correctement ceci?
public List<Something> parseSomething(Node n){
List<Something> somethings = new ArrayList<Something>();
initialize();
sameCodeInBothClasses();
List<Node> nodes = getChildrenByName(n, "somename");
for(Node n:nodes){
method();
actionA();
somethings.add(new Something(actionB());
}
return somethings;
}
méthodes sameCodeInBothClasses()
sont les mêmes dans toutes les classes mais où il diffère est ce qui se passe dans la boucle actionA()
et il ajoute également un élément à la liste de type différent.
Dois-je utiliser le modèle de stratégie pour les différentes parties à l'intérieur de la boucle?
Qu'en est-il de la valeur de retour (Le type de liste diffère), si la méthode retourne juste List<Object>
que je convertirais alors en type approprié? Dois-je passer la classe que je veux revenir en paramètre?
les méthodes 'sameCodeInBothClasses()', 'method()', 'actionA()' provoquent-elles des effets secondaires? En d'autres termes, cette méthode d'analyse fait-elle plus que simplement analyser quelque chose du nœud donné? – Anurag