Nơi tôi làm việc tôi thấy rất nhiều lớp học làm những việc như thế này:
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"
}
}
Nếu tôi viết nó từ đầu, methodWithLogic()
thay vào đó tôi sẽ viết như thế này:
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"
}
}
Tôi cảm thấy rằng khi lớp gọi các getters và setters riêng của nó, nó làm cho mã khó đọc hơn. Đối với tôi nó gần như ngụ ý rằng logic phức tạp đang xảy ra trong cuộc gọi phương thức đó mặc dù trong trường hợp của chúng tôi, nó gần như không bao giờ. Khi tôi gỡ lỗi một số mã lạ, ai sẽ nói rằng lỗi không phải là một tác dụng phụ trong phương pháp đó? Nói cách khác, nó khiến tôi có nhiều chuyến đi phụ trên hành trình tìm hiểu mã.
Có lợi ích cho phương pháp đầu tiên? Là phương pháp đầu tiên thực sự tốt hơn?