1.要是结构简单,可以通过swtich语法替代
switch (condition) {
case 1:
// code block break;
case 2:
// code block break;
default:
// code block
}
2.使用对象字面量替换
const actions = {
1: function(o) {
// code block
},
200: function(o) {
// code block
},
404: function(o) {
// code block
}
}
function condition(type,obj){
const handler = action[type]
handler && action[type](obj)
}
condition(1)
condition(200)
condition(404)
考虑到我目前在线客服实时通信中的一种情形,下面简述优化一下
//原代码,通过websocket接收消息,携带的大批量参数,调用一个onko方法
onko(a,b,c,d,e,f,g,h,i,j,k,type)
function onko(a,b,c,d,e,f,g,h,i,j,k,type){
cosnt msg_id = "msg_id"+a //有使用到参数
if(type==1){
//do something
}else if(type==200){
//do something
}else if(type==400){
//do something
}else{
//do something
}
}
考虑到上面对象字面量优化方案的方法内可能也有使用到onko()参数,一个一个再传到方法内麻烦,而且这if-else判断外也有使用到onko()参数,做了如下优化:
//原代码,通过websocket接收消息,携带的大批量参数,调用一个onko方法
onko({a,b,c,d,e,f,g,h,i,j,k,type})
function onko(opt){
const {a,b,c,d,e,f,g,h,i,j,k,type} = opt //解构出来
cosnt msg_id = "msg_id"+a //直接使用
condition(type,opt) //一行代码把if-else优化了,且符合程序设计solid原则的开放封闭原则
}