美文网首页周分享
if else 嵌套优化——周分享

if else 嵌套优化——周分享

作者: 橙汁坤 | 来源:发表于2020-02-20 16:02 被阅读0次

    if else 嵌套优化

    function Demo (a, b, c) {
      if (func1(a, b, c)) {
        action ((a, b, c)=>{
        // do something...  
        }) 
       } else if (func2(a, b, c)) {
        // do something...
         action ((a, b, c)=>{
          // do something...  
          }) 
        }else if (func3(a, b, c)) {
          action ((a, b, c)=>{
          // do something...  
          })  
       } 
    }
    func1(a,b,c){ do something}
    func2(a,b,c){ do something}
    func3(a,b,c){ do something}
    

    各个分支控制下的代码如下:


    image.png

    优化后

    const RuleMap = [
     {
         rule: func1(a, b, c) { do something  //判断是否匹配//   },
        action :function (a, b, c) {do something...}
      },
      {
         rule: func2(a, b, c) { do something    },
        action :function (a, b, c) {do something...}
      },
      {
         rule: func3(a, b, c) { do something    },
        action :function (a, b, c) {do something...}
      }
    ]
    
    function Control (a, b, c) {
      for (let i = 0; i < RuleMap.length; i++) {
        if (RuleMap[i].rule(a, b, c)) {
          return RuleMap[i].action(a, b, c)
        }
      }
    }
    

    RuleMap是所有判断规则和其执行方法的合集,RuleMap 中的每一项都具有 rule(规则) 与 action (方法)属性。这时可以将原有函数的 else if 改写对职责链数组的遍历。这时每个rule一旦匹配,函数就会直接返回,通过此方法可以实现对单体复杂 else if 逻辑的拆分。


    image.png

    相关文章

      网友评论

        本文标题:if else 嵌套优化——周分享

        本文链接:https://www.haomeiwen.com/subject/ytxgfhtx.html