【发布时间】:2017-05-28 19:47:30
【问题描述】:
我有一个对我的应用程序很重要的简单复制/克隆方法:
@Override
public Operation getCopy() {
Operation copy = new Operation();
copy.year = this.year;
copy.stage = this.stage;
copy.info = this.info;
copy.user = this.user.getCopy();
// NOT TO BE COPIED! copy.id = this.id;
...
return copy;
}
请注意,有些特定字段不应被复制。还有一些复杂的对象(比如用户)有自己的复制方法。
问题在于,随着新代码的开发,有时开发人员会创建一个应该复制的新字段,但他忘记将其添加到copy 方法中:
private String additionalInfo;
即使没有编译错误,也存在业务问题,只有稍后我们的 QA 团队甚至用户才发现。
我能做些什么来防止这种情况发生?我已经尝试过在原始对象与其副本之间进行比较的 JUnit 测试,它们适用于现有字段,但它们不考虑新字段。
【问题讨论】: