gpt4 book ai didi

java - 降低代码的循环复杂度

转载 作者:行者123 更新时间:2023-12-01 23:12:20 25 4
gpt4 key购买 nike

Sonar给出以下代码的主要违规错误(“循环复杂度”).以下方法用于获取特殊格式的日期,例如14-02-3(年-月-周 ID)。

如何克服这种违规行为?

private String finalDateForProject; 
public String getFinalDateForProject() {
return finalDateForProject;
}

public void setFinalDateForProject(Integer year,Integer month, Integer weekId) {

String projectMonth;
switch (month) {
case 0: projectMonth = "01";
break;
case 1: projectMonth = "02";
break;
case 2: projectMonth = "03";
break;
case 3: projectMonth = "04";
break;
case 4: projectMonth = "05";
break;
case 5: projectMonth = "06";
break;
case 6: projectMonth = "07";
break;
case 7: projectMonth = "08";
break;
case 8: projectMonth = "09";
break;
case 9: projectMonth = "10";
break;
case 10: projectMonth = "11";
break;
case 11: projectMonth = "12";
break;
default: projectMonth = " ";
break;
}

String yearEdited = year.toString();
yearEdited = yearEdited.replace("20", "");


String projectTrendDate = yearEdited +"-"+projectMonth+"-W"+weekId.toString();

this.finalDateForProject =projectTrendDate;
}

最佳答案

我认为降低圈复杂度的一种方法是替换 switch 语句。只需创建一个数组或 HashMap,将月份索引映射到数字;

public void setFinalDateForProject(Integer year,Integer month, Integer weekId) {
String[] months = new String[] {"01", "02", "03", "04", "05", ...}
// Replace switch statement
String projectMonth = months[month];
// Rest of your code
...
}

解决此问题的另一种方法是使用 String.format 将整数转换为字符串来替换数字到字符串的映射。 。使用类似的东西:

String projectMonth = String.format("%02d", month + 1);

关于java - 降低代码的循环复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21695445/

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