首页 > 其他分享 >ifelse嵌套屎山的解决方法-卫语句

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

时间:2023-01-20 23:00:10浏览次数:40  
标签:语句 代码 嵌套 switch 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的屎山代码,增加了代码的可读性和可维护性。

标签:语句,代码,嵌套,switch,ifelse,使用
From: https://www.cnblogs.com/wanglei1900/p/17063373.html

相关文章

  • 条件控制语句
    if语句包含零个或多个elif子句,及可选的else子句。关键字‘elif‘是‘elseif’的缩写,适用于避免过多的缩进。可以把if…elif…elif…序列看作是其他语言中......
  • 循环控制语句 之 with_together
    功能类似于:列表元素数量上要一一对应foriinzip([1,2,3],['a','b','c']):print(i)-hosts:alltasks:-name:debugdebug:msg:"{{item}}"......
  • 循环控制语句 之 with_indexed_items
    添加索引-hosts:alltasks:-name:debugdebug:msg:"{{item}}"with_indexed_items:-[1,2,3]-['a','b','c','d']-hosts:all......
  • 循环控制语句 之 with_together
    功能类似于:foriinzip([1,2,3],['a','b','c']):print(i)-hosts:alltasks:-name:debugdebug:msg:"{{item}}"with_together:......
  • 循环控制语句 之 with_nested
    嵌套循环可以理解为:foriin[1,2,3]:forjin['a','b','c','d']:print(i,j)-hosts:alltasks:-name:debugdebug:msg:"{{item......
  • 循环控制语句 之 with_list
    with_list不展开循环嵌套的列表。功能类似于foriinzip([1,2,3],['a','b','c']):print(i)-hosts:alltasks:-name:debugdebug:msg:"{{......
  • 循环控制语句 之 with_items
    示例1可以理解为:foritemingroups.ungrouped:print(item)-hosts:alltasks:-name:debugdebug:msg:"{{item}}"with_items:"{{gr......
  • Java零基础07篇:switch语句以及案例
    文章目录​​一、switch语句结构(本阶段需要掌握)​​​​格式:​​​​执行流程:​​​​二、小练习-春夏秋冬​​​​需求:一年12个月分属于春夏秋冬4个季节,键盘录入一个月份,用......
  • Java零基础06篇:流程控制语句应用篇
    文章目录​​前言​​​​一、流程控制语句分类​​​​二、顺序结构​​​​三、分支结构之if语句​​​​if语句格式1:​​​​if语句格式2:​​​​if语句案例:奇偶数​​​......
  • Spring Batch多步骤任务、并行执行、任务决策器、任务嵌套
    道虽迩(ěr),不行不至,事虽小,不为不成......