W miejscu pracy widzę wiele klas, które wykonują takie rzeczy:
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"
}
}
Gdybym napisał to od zera, methodWithLogic()
zamiast tego napisałbym tak:
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"
}
}
Wydaje mi się, że kiedy klasa wywołuje własne metody pobierające i ustawiające, utrudnia to odczytanie kodu. Dla mnie prawie implikuje to, że w tym wywołaniu metody dzieje się złożona logika, nawet w naszym przypadku prawie nigdy tak nie jest. Kiedy debuguję jakiś nieznany kod, kto może powiedzieć, że błąd nie jest efektem ubocznym tej metody? Innymi słowy, sprawia, że biorę wiele dodatkowych podróży w podróż po zrozumieniu kodu.
Czy są zalety pierwszej metody? Czy pierwsza metoda jest rzeczywiście lepsza?