【发布时间】:2021-03-16 05:50:11
【问题描述】:
在优化此 java 代码方面需要帮助。圈复杂度是 20 需要 15。
private static void replaceNodeProperties(HashMap configNodeProperties, JSONArray esdNodepropertiesList)
{
HashMap replaceConfigNodePropRules = (HashMap) configNodeProperties.get("replace");
if (replaceConfigNodePropRules != null) {
for (Object replaceConfigNodeProp : replaceConfigNodePropRules.keySet()) {
for (int j = 0; j < esdNodepropertiesList.size(); j++) {
JSONObject esdNodePropObj = (JSONObject) esdNodepropertiesList.get(j);
if (esdNodePropObj.get("name").toString().contains("::")) {
esdNodePropObj.put("name", esdNodePropObj.get("name").toString().split("::")[1]);
}
if (esdNodePropObj.get("name").equals(replaceConfigNodeProp)) {
if (replaceConfigNodeProp.equals("resourceType")) {
esdNodepropertiesList.remove(j);
ArrayList replaceNodePropList = (ArrayList) replaceConfigNodePropRules.get(replaceConfigNodeProp);
esdNodepropertiesList.addAll(replaceNodePropList);
} else if (replaceConfigNodeProp.equals("comments"))
esdNodePropObj.put("name", replaceConfigNodePropRules.get(replaceConfigNodeProp));
break;
}
}
}
}
}
【问题讨论】:
-
你使用什么圈复杂度算法(例如 McCabe、Prater)?
-
您是否需要降低其复杂性,还是您的 IDE 只是将其标记为复杂?我认为我会尝试做的第一个想法是将内部
for循环提取到它自己的方法中。 -
我的 IDE 中的声纳将其标记为复杂。可以通过为 for 循环创建 2 个小方法来解决此问题。
标签: java cyclomatic-complexity