美文网首页
代码存在大量的if/else优化方案总结

代码存在大量的if/else优化方案总结

作者: Grit_1024 | 来源:发表于2021-06-25 15:28 被阅读0次
过多的else if 会使代码臃肿而简陋,下面是优化方案总结

一、多个else if分支优化

1.Key-value的方式,通过操作相关联的键值

优化前:

    if ((A = 10)) {
      rule.id = "a";
    } else if ((B = 100)) {
      rule.id = "b";
    } else {
      rule.id = "c";
    }

优化后:

    let player = {
      A: "a",
      B: "b",
      无: "c",
    };
    player[A] ? player[B] : player["无"];
2.new Map替代if else
    let key = "B"; //条件
    let player = new Map([
      ["A", "a"],
      ["B", "b"],
      ["无", "c"],
    ]);
    let action = player.get(key) || player.get("无");
    console.log(action);//b
 
    //     const actions = new Map([
    //     ['guest_1', () => { functionA }],
    //     ['guest_2', () => {  functionB }],
    //     ['guest_3', () => { functionC }],
    //     ['guest_4', () => { functionA }],
    //     ['default', () => { functionC  }],
    // ])
    // console.log(actions);

二、单个if多条件优化

优化前:

function test(type) {
  if (type === 'jpg' || type === 'png' || type === 'gif' || type === 'svg') {
    console.log("该文件为图片");
  }
}

优化后:

function test(type) {
    const imgArr = ['jpg', 'png', 'gif', 'svg']
    if (imgArr.includes(type)) {
        console.log("该文件为图片")
    }
}

三、if/else语句优化

排非策略
优化前:

 if (user && password) {
        // 逻辑处理
    } else {
        throw('用户名和密码不能为空!')
    }

优化后:

if (!user || !password) return throw('用户名和密码不能为空!')

三元运算符
优化前:

let allow = null
if(id>=10 ){ 
   allow = '通过'; 
} else { 
   allow = '拒绝'; 
}

// 优化后
let allow = id>=10  ? '通过' : '拒绝'

四、单个if语句优化

优化前:

if (a) {
 this.handleFn()
}

优化后

flag && this.handleFn()

相关文章

网友评论

      本文标题:代码存在大量的if/else优化方案总结

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