ifelse嵌套屎山的解决方法-卫语句

卫语句(Guard)

什么是卫语?卫语句是一种编程思想,提前检查边界,保卫代码。

一、什么时候使用卫语句

大厂开发规范,超过三个ifelse建议使用卫语句、策略模式、状态模式等方式重构

以下代码中使用了卫语句进行了优化,当然实际开发中业务比这个更复杂,所以更加体现了遇到复杂逻辑需要使用卫语句。

// 求100以内同时是 3,4,5 的倍数
for (let i = 0; i <= 100; i++) {
    if (i % 3 == 0) {
        if (i % 4 == 0) {
            if (i % 5 == 0) {
                console.log(i)
            }
        }
    }
}

// 使用卫语句,从结果导向思考,摘除不是3,4,5倍数的,剩下的就是我们要的
for (let i = 0; i <= 100; i++) {
    if (i % 3 !== 0) {
        continue
    }
    if (i % 4 !== 0) {
        continue
    }
    if (i % 5 !== 0) {
        continue
    }
    console.log(i);
}

二、总结

  1. 单一嵌套ifelse分支嵌套直接使用switch就可以解决了。但是业务逻辑变得复杂时,switch恐难胜任。
  2. 我们发现如果按照事情发生的顺序写代码,会出现太多的ifesle分支,难以维护。这时候就需要使用卫语句提前检查边界直接return/continue掉不可能发生的分支。
  3. 卫语句其实是一种编程思想,从结果导向思考来优化代码。解决了ifelse的屎山代码,增加了代码的可读性和可维护性。
posted @ 2023-01-20 22:53  wanglei1900  阅读(200)  评论(0编辑  收藏  举报