Estoy trabajando con un código que agrega un nodo secundario a su padre en el constructor del niño. El código es como la siguiente:Práctica recomendada: ¿Agregar nodo hijo a un elemento primario en el constructor hijo o no?
Clase:
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);
}
}
Uso:
Node1 parent = new Node1(null, "parent");
Node1 child1 = new Node1(parent, "child1");
Node1 child2 = new Node1(parent, "child2");
Mediante la implementación de esta manera el usuario de la clase Node1
no tiene que añadir explícitamente el nodo hijo (menos código) a su padre y tiene garantizado que un nodo hijo tiene un padre.
yo personalmente no lo hubiera escrito como éste, sino más bien como la siguiente:
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);
Así que mi pregunta es, ¿es una buena idea para ponerlo en práctica, como se muestra en la clase Node1
o hay objeciones para hacerlo de esa manera? ¿O no hay ningún argumento de por qué uno es mejor que el otro?
+1: Bastante más de lo que habría dicho. –
Este es un buen punto, es mejor no usar esto en un constructor. –