我有一个同事,不断在我们的getter / setter方法中添加逻辑。从我在该主题上看到的所有类似问题来看,这似乎都是目标,并且没有明确的答案。
我认为我的同事正在尝试将此逻辑放在此处,因此不会在代码中重复。他本可以创建一种单独的方法来遵守DRY原理,但对他来说,将其放在吸气剂/装料器中是最好的方法。 首先,我们使用Lombok库来减少样板代码,以便它将为我们自动生成这些代码。尽管有一些决定要明确定义它们,而不是让Lombok生成它们,以便可以向它们添加逻辑。我感觉到的问题是,除非您采用这些方法(调试时谁确实会采用getter / setter方法?),否则您将不了解这些方法中还会发生其他事情,因此这会产生误导,并且还会破坏单一职责。
我试图了解最佳做法是什么?下面,我提供了一些简单的示例进行演示。
public class MyClass {
private MyKeyClass key;
public MyKeyClass getKey {
//I feel like this if condition should not be here, method also
//doing more than one thing. It's setting and getting
if(key == null) {
key = new MyKeyClass();
}
return key;
}
public void setKey(MyKeyClass key) {
this.key = key;
}
private SomeOtherClass someOtherClass;
public SomeOtherClass getSomeOtherClass() {
return this.someOtherClass;
}
public void setSomeOtherClass(SomeOtherClass someOtherClass) {
this.someOtherClass= someOtherClass;
//Other logic that is being set, but for the key class
//I don't think this belongs either and should be done elsewhere
this.key.setKey(someOtherClass.getKey());
}
}