美文网首页
代码能力可读提升 二 策略模式

代码能力可读提升 二 策略模式

作者: litielongxx | 来源:发表于2023-09-18 09:42 被阅读0次

    当存在if else过多时,会造成页面过长,且复杂度增加。
    有的会用switch替代,高级点的会用策略模式处理。
    复用 +1
    代码简洁 +1

    const calculateSalary = function (workerLevel, workHours = 10) {
        if (workerLevel === 'high') {
            return workHours * 25
        }
        if (workerLevel === 'middle') {
            return workHours * 20
        }
        if (workerLevel === 'low') {
            return workHours * 15
        }
    }
    console.log(calculateSalary('high')) // 250
    console.log(calculateSalary('middle')) // 200
    

    改为策略模式

    const strategies = {
        "high": function (workHours) {
            return workHours * 25
        },
        "middle": function (workHours) {
            return workHours * 20
        },
        "low": function (workHours) {
            return workHours * 15
        },
    }
    
    const calculateSalary = function (workerLevel, workHours) {
        return strategies[workerLevel](workHours)
    }
    console.log(calculateSalary('high', 10)) // 250
    console.log(calculateSalary('middle', 10)) // 200
    

    优点1 可维护增加,例如新增时候strategies可以很方便,且符合eslint推荐的圈复杂度
    主要在于在后期维护的过程中不需要关注具体业务。而strategies也可以导出作为其余需要时的复用+1;calculateSalary写入专用的业务代码也更符合规范
    优点2 变相提升代码水平能力 代码高大上 指数+1 和薪资挂钩
    ps:
    参考资料:
    https://juejin.cn/post/7279041076273610764
    (一个if会让圈复杂增加1,圈复杂度高的代码不易阅读和维护,)

    相关文章

      网友评论

          本文标题:代码能力可读提升 二 策略模式

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