当存在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,圈复杂度高的代码不易阅读和维护,)
网友评论