Donde trabajo, veo muchas clases que hacen cosas como esta:
public class ClassThatCallsItsOwnGettersAndSetters {
private String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public void methodWithLogic() {
setField("value");
//do stuff
String localField = getField();
//do stuff with "localField"
}
}
Si escribiera esto desde cero, habría escrito el methodWithLogic()
así:
public class ClassThatUsesItsOwnFields {
private String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public void methodWithLogic() {
field = "value";
//do stuff
//do stuff with "field"
}
}
Siento que cuando la clase llama a sus propios captadores y definidores, hace que el código sea más difícil de leer. Para mí, casi implica que la lógica compleja está ocurriendo en esa llamada de método, aunque en nuestro caso casi nunca lo es. Cuando estoy depurando un código desconocido, ¿quién puede decir que el error no es un efecto secundario en ese método? En otras palabras, me hace realizar muchos viajes secundarios en el camino de entender el código.
¿Hay beneficios para el primer método? ¿Es realmente mejor el primer método?