Je travaille avec du code qui ajoute un nœud enfant à son parent dans le constructeur de l'enfant. Le code ressemble à ceci:Meilleure pratique: Ajouter un noeud enfant à un parent dans le constructeur enfant ou non?
Classe:
class Node1 {
public Node1(Node1 parent, String name) {
if(parent != null) {
parent.add(this);
}
this.parent = parent;
}
private void add(Node1 child) {
children.add(child);
}
}
Utilisation:
Node1 parent = new Node1(null, "parent");
Node1 child1 = new Node1(parent, "child1");
Node1 child2 = new Node1(parent, "child2");
En mettant en œuvre cette façon l'utilisateur de la classe Node1
ne pas ajouter explicitement le nœud enfant (moins de code) à son parent et vous avez garanti qu'un noeud enfant a un parent.
Personnellement, je ne l'aurais pas écrit comme ça, mais plus comme ce qui suit:
class Node2 {
public Node2(String name) {
}
public void add(Node2 child) {
children.add(child);
child.setParent(this);
}
}
Node2 parent = new Node2("parent");
Node2 child1 = new Node2("child1");
parent.add(child1);
Node2 child2 = new Node2("child2");
parent.add(child2);
Ma question est, est-ce une bonne idée de mettre en œuvre comme indiqué dans la classe Node1
ou sont ANY objections de le faire de cette façon? Ou n'y a-t-il aucun argument pour expliquer pourquoi l'un est meilleur que l'autre?
+1: plus ou moins ce que je l'aurais dit. –
C'est un bon point, il vaut mieux ne pas l'utiliser dans un constructeur. –