我有这种方法:
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的基本原则。
那么有替代解决方案吗?
最佳答案
我会重写以使用Exceptions,故意返回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
}