Tempat saya bekerja, saya melihat banyak kelas yang melakukan hal-hal seperti ini:
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"
}
}
Jika saya menulis ini dari awal, saya akan menulis methodWithLogic()
seperti ini sebagai gantinya:
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"
}
}
Saya merasa bahwa ketika kelas memanggil getter dan setter sendiri, itu membuat kode lebih sulit untuk dibaca. Bagi saya hampir menyiratkan bahwa logika kompleks terjadi dalam pemanggilan metode meskipun dalam kasus kami hampir tidak pernah ada. Ketika saya sedang men-debug beberapa kode yang tidak dikenal, siapa yang mengatakan bahwa bug tersebut tidak menimbulkan efek samping dalam metode itu? Dengan kata lain, itu membuat saya melakukan banyak perjalanan samping dalam perjalanan memahami kode.
Apakah ada manfaat untuk metode pertama? Apakah metode pertama sebenarnya lebih baik?