Javascript:降低圈复杂度

时间:2017-02-08 12:29:39

标签: javascript if-statement conditional 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();
  }
}




有没有办法将此条件语句缩减为更短的形式和更好的可读性

2 个答案:

答案 0 :(得分:2)

可以使用对象映射SelType特定方法

var methods = {
  'a': setDefaultQQ,
  'o': setDefaultOO,
  'm': setDefaultMM,
  ....    
}

if(response.bMap && methods[SelType]){
   methods[SelType](response.bMap);
}else{
   setDefaultData();
   showModal();
}

答案 1 :(得分:0)

这不是一个好方法,但这个怎么样

eval("setDefault"+SelType.toUpperCase()+SelType.toUpperCase()+"(response."+SelType.toUpperCase()+"Map);");

但肯定不是最好的方式。