আমি যেখানে কাজ করি সেখানে প্রচুর ক্লাস দেখতে পাই যা এই জাতীয় কাজ করে:
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"
}
}
আমি যদি এটি স্ক্র্যাচ থেকে লিখি তবে methodWithLogic()
পরিবর্তে আমি এ জাতীয়টিই লিখতে চাইতাম :
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"
}
}
আমি অনুভব করি যে ক্লাসটি যখন নিজের গেটার এবং সেটটারগুলি কল করে তখন কোডটি পড়া আরও শক্ত করে তোলে। আমার কাছে এটি প্রায়শই বোঝায় যে সেই পদ্ধতি কলটিতে জটিল যুক্তি ঘটছে যদিও আমাদের ক্ষেত্রে এটি প্রায় কখনও হয় না। আমি যখন কিছু অপরিচিত কোডটি ডিবাগ করছি, তখন কে বলবে যে সেই পদ্ধতিতে বাগ কোনও পার্শ্ব প্রতিক্রিয়া নয়? অন্য কথায়, এটি কোড বোঝার যাত্রায় আমাকে প্রচুর পার্শ্ব ভ্রমণ করতে বাধ্য করে।
প্রথম পদ্ধতিতে কি সুবিধা রয়েছে? প্রথম পদ্ধতিটি কি আসলে আরও ভাল?