gpt4 book ai didi

java - 具有多项检查的 void 方法重构

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:23 24 4
gpt4 key购买 nike

我有这个方法:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com