我有这个方法:
public void validate(param1, pararm2, param3 ...) {
if(check1)
add error
return
if check2
add error
return
getDbObject
check3
exception
return
还有另一个用例,除了上述检查之外,如果通过了 check1 和 check2,那么在 check3 之后应该返回 db 对象。 实现它的最佳做法应该是什么?
我应该写一个新的方法来进行相同的检查并在 check3 之后返回 db 对象,还是添加更多参数并简化现有方法?
我读到的最佳实践是最多有 5 个参数,所以如果我们添加更多参数,最终第一个方法调用将有 8-9 个参数 如果我们减少参数的数量,那么每次调用都需要更多的检查(if 语句),这也违反了 OOP 的基本原则。 那么有替代方案吗?
最佳答案
我会重写以使用异常,故意返回 null 对调用者没有帮助,可能是这样的:
public DbObjectType validate(param1, param2, ...) throws Check1FailedException, Check2FailedException, Check3FailedException {
check1();
check2();
check3();
return getDbObject();
}
private check1() throws Check1FailedException() {
//DoCheck and throw Exception if failed
}
private check2() throws Check2FailedException() {
//DoCheck and throw Exception if failed
}
private check3() throws Check3FailedException() {
//DoCheck and throw Exception if failed
}
关于java - 具有多项检查的 void 方法重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48960402/