gpt4 book ai didi

javascript - AngularJs 中简单 if else if 循环的循环复杂度

转载 作者:行者123 更新时间:2023-11-28 04:54:06 30 4
gpt4 key购买 nike

我正在重构我的代码,我使用 SonarQube、SonarRunner、JSHint 来遵循最佳实践来检查代码复杂性、质量和重复。

对于正常的 if else if 循环,复杂度很高,在 15 到 20 之间,我需要将其降低到 10 以下,我会这样做吗?

if( ..condition.. ){

}else if( ..condition.. ){

}else if( ..condition.. ){

}

像这样我有大约 15 到 20 个条件。谁能建议我如何降低复杂性?

最佳答案

这取决于上下文。如果您有重复的业务逻辑,例如

if(object.color === 'red'){
runApple();
} else if (object.isRound){
runApple();
} else if(object.isTasty){
runApple();
}

然后你可以将所有内容重构为

function isApple(object){
return object.color === "red" || object.isRound || object.isTasty;
}

if(isApple(object){
runApple();
}

如果要运行的业务逻辑完全不同,那么您可以尝试将所有条件分组到某种函数中

例如

function isCondition1_2or3(){
return isCondition1() || isCondition2() || isCondition3();
}

function exectue1_2or3(){
if(isCondition1()){
execute1();
} else if (isCondition2()){
execute2();
...
}

然后你将重构你的大函数以使用新函数

if(isCondition1_2_or3()){
execute1_2_or3()
} else if (...

关键是在您的业务领域中找到某种代表不同条件的自然分组,例如前面的示例,其中红色、圆形或美味的对象意味着该对象是苹果。

但是,如果确实没有代表不同条件的自然分组。让你的圈复杂度检查器忽略那个大函数可能更容易。

关于javascript - AngularJs 中简单 if else if 循环的循环复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42686129/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com