Onde trabalho, vejo muitas classes que fazem coisas assim:
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"
}
}
Se eu escrevesse isso do zero, teria escrito o methodWithLogic()
seguinte:
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"
}
}
Eu sinto que quando a classe chama seus próprios getters e setters, torna o código mais difícil de ler. Para mim, quase implica que uma lógica complexa está acontecendo nessa chamada de método, embora, no nosso caso, quase nunca ocorra. Quando estou depurando algum código desconhecido, quem pode dizer que o bug não é um efeito colateral nesse método? Em outras palavras, isso me faz fazer muitas viagens paralelas na jornada de compreensão do código.
Existem benefícios para o primeiro método? O primeiro método é realmente melhor?