Javascript:降低圈复杂度
Javascript: Reduce cyclomatic complexity
function(response) {
if (response.bMap && SelType === 'q') {
setDefaultQQ(response.bMap);
} else if (response.bMap && SelType === 'a') {
setDefaultAA(response.bMap);
} else if (response.bMap && SelType === 'o') {
setDefaultOO(response.bMap);
} else if (response.mMap && SelType === 'm') {
setDefaultMM(response.mMap);
} else if (response.bMap && SelType === 'p') {
setDefaultPP(response.bMap);
} else if (response.eMap && SelType === 'e') {
setDefaultEE(response.eMap);
} else {
setDefaultData();
showModal();
}
}
有没有办法将这个条件语句简化为更短的形式和更好的可读性
确实没有什么好办法,这个怎么样
eval("setDefault"+SelType.toUpperCase()+SelType.toUpperCase()+"(response."+SelType.toUpperCase()+"Map);");
但肯定不是最好的方法。
可以使用对象来映射 SelType 特定方法
var methods = {
'a': setDefaultQQ,
'o': setDefaultOO,
'm': setDefaultMM,
....
}
if(response.bMap && methods[SelType]){
methods[SelType](response.bMap);
}else{
setDefaultData();
showModal();
}
function(response) {
if (response.bMap && SelType === 'q') {
setDefaultQQ(response.bMap);
} else if (response.bMap && SelType === 'a') {
setDefaultAA(response.bMap);
} else if (response.bMap && SelType === 'o') {
setDefaultOO(response.bMap);
} else if (response.mMap && SelType === 'm') {
setDefaultMM(response.mMap);
} else if (response.bMap && SelType === 'p') {
setDefaultPP(response.bMap);
} else if (response.eMap && SelType === 'e') {
setDefaultEE(response.eMap);
} else {
setDefaultData();
showModal();
}
}
有没有办法将这个条件语句简化为更短的形式和更好的可读性
确实没有什么好办法,这个怎么样
eval("setDefault"+SelType.toUpperCase()+SelType.toUpperCase()+"(response."+SelType.toUpperCase()+"Map);");
但肯定不是最好的方法。
可以使用对象来映射 SelType 特定方法
var methods = {
'a': setDefaultQQ,
'o': setDefaultOO,
'm': setDefaultMM,
....
}
if(response.bMap && methods[SelType]){
methods[SelType](response.bMap);
}else{
setDefaultData();
showModal();
}