提问者:小点点

Java最佳验证结构[已结束]


我正在研究一个基于数据库数据的验证解决方案。 现在,代码中的结构由if-else语句覆盖,但我正在寻找一个更复杂的解决方案,因为预计结构会像现在这样更复杂。 复杂验证的最佳方法是什么? 只需将其划分为方法,一些验证类解决方案,或者您是否有一些更好的方法来处理类似的事情?

  if (someCondition1) {
        if (!someCondition2) {
            if (!someCondition3) {
                if (!someCondition4) {
                   doSomething();
                } else {
                    doSomething2();
                }
            } else {
                doSomething3();
            }
        } else {
            doSomething4;
        }
    } else {
        doSomething5;
    }

共2个答案

匿名用户

你可以做很多事情

1-将这些条件调用拆分为更小的方法

2-尽可能使用switch语句

3-验证您的逻辑,看看是否所有的案例都是必需的,或者是否可以将它们分组

您发布的代码确实太嵌套了,而且将来很难调试,因此您可能希望至少将其分解成更小的,可理解的部分

匿名用户

至少,您可以通过重新排序和翻转某些条件来使嵌套变得平坦:

if (!someCondition1) {
    doSomething5()
} else if (someCondition2) {
    doSomething4()
} else if (someCondition3) {
    doSomething3()
} else if (someCondition4) {
    doSomething2()
} else {
    doSomething()
}

这种转换之所以有效,是因为条件空间可以像那样被分割成大块; 如果遇到ifand和else分支都必须检查进一步的条件的情况,则这是不可能的。

然后可以将其重铸为Kotlin:

when {
    !someCondition1 -> doSomething5()
    someCondition2 -> doSomething4()
    someCondition3 -> doSomething3()
    someCondition4 -> doSomething2()
    else -> doSomething()
}

这与您的原始代码完全相同,但以一种更简洁的方式。

当然,还有很多更激烈和更高级别的重构可以做,但我认为没有一个明显的答案,因为这可能取决于条件的性质和数量,以及它们在将来如何改变。