有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的最佳验证结构

我正在开发一个基于DB数据的验证解决方案。目前,if-else语句涵盖了代码中的结构,但我正在寻找一个更复杂的解决方案,因为预计该结构会像现在这样更复杂。复杂验证的最佳方法是什么?只需将其划分为方法、一些验证类解决方案,或者您对如何处理类似的问题有更好的想法吗

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

共 (2) 个答案

  1. # 1 楼答案

    你可以做很多事情

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

    2-尽可能使用switch语句

    3-验证你的逻辑,看看是否所有的案例都是真正必要的,或者它们可以分组

    您发布的代码肯定太嵌套了,将来很难调试,所以您可能希望至少将其分解为更小的可理解的部分

  2. # 2 楼答案

    作为最低要求,您可以通过重新排序和翻转一些条件来展平嵌套:

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

    (这种转换之所以有效,是因为条件空间可以像这样分割成大块;如果有一个ifelse分支都必须检查进一步的条件的情况,就不可能了。)

    然后可以将其改写为Kotlin when

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

    这与您的原始代码完全相同,但更简洁

    当然,你可以做更多更激烈、更高层次的重构,但我认为没有一个明显的答案,因为这可能取决于条件的性质和数量,以及它们在未来可能发生的变化