我有这种方法:

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
}

07-26 05:07