Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何降低函数的圈复杂度_Javascript_Sonarqube - Fatal编程技术网

Javascript 如何降低函数的圈复杂度

Javascript 如何降低函数的圈复杂度,javascript,sonarqube,Javascript,Sonarqube,我有一个复杂度大于12的函数。我试图降低它的复杂性。我四处搜索,但找不到太有用的东西。有可能降低这种复杂性吗?-如果是这样,我将如何着手这样做 下面是函数 function sea(name) { +1 if (name === 'sa') { +1 return 'SA'; +1 } else if (name === 'uk') { +1 return 'UK'; +1

我有一个复杂度大于12的函数。我试图降低它的复杂性。我四处搜索,但找不到太有用的东西。有可能降低这种复杂性吗?-如果是这样,我将如何着手这样做

下面是函数

 function sea(name) {    +1
   if (name === 'sa') {         +1
      return 'SA';            +1
    } else if (name === 'uk') {    +1
      return 'UK';             +1
    } else if (name === 'northkorea') {   +1
      return 'NK';                 +1
    } else if (name === 'hongkong') {  +1
      return 'HK';                     +1
    } else {
      var rs = new RegExp(/\w);

      return name.replace(rs, function(up) {        +1
        return up.charAt(0);
      });
    }
  }```

我认为没有必要更改此函数。它本身很好,易于阅读,也易于测试。不管这个消息来自什么工具,只要把它标记为假阳性就行了


如果每个条件都有不同的变量,我的推理就会完全不同。但是,由于if-then-else的序列类似于一个简单的表查找,所以它确实是一个错误的工具。它应该根据人类真正难以理解的东西来衡量复杂性。其中一个例子是嵌套很深的if语句。

您可能可以使用一个对象来存储这些国家/地区值(如字典),类似这样的操作应该可以完成:

const国家={
美国:“美国”,
英国:“联合王国”
//…你想要的所有其他国家
}
功能countryCaps(国家/地区){
如果(国家[国家]){
返回国[国家];
}否则{
//…此处是您的正则表达式替换函数
}
}
const country=countryCaps(“美国”);
控制台日志(国家)您可以执行以下操作:

//代码重构
功能外观(国家){
常量国家={
南非,
英国:“联合王国”,
朝鲜:"朝鲜",,
澳:"澳洲",,
香港:"香港"
};
const toUpperCaseFirstLetter=c=>c.replace(新的RegExp(/\w/),s=>s.charAt(0.toUpperCase());
返回国[国家]| | toUpperCaseFirstLetter(国家);
}
//测试:
[
"sa",,
“英国”,
"香港",,

“西班牙”//这在sonarqube中不起作用,需要以某种方式将复杂性从12降低到10登录sonarqube,将问题标记为假阳性,完成。如果您没有这样做的权限,这是组织的错误。