我在重构这部分代码时遇到了问题。如何降低该代码的认知复杂性
if (fieldseparator != null && !fieldseparator.isEmpty()) {
if (fieldseparator.equals("\\t")) {
delim = '\t';
} else {
// handling unicode separator
Integer i = Ints.tryParse(fieldseparator);
if (i != null) {
fieldseparator = String.valueOf(Character.toChars(i));
delim = fieldseparator.charAt(0);
} else {
delim = fieldseparator.charAt(0);
}
}
}
public static Character getDelim(String fieldseparator, Character defaultDelim) {
if (isNotEmpty(fieldseparator)) {
return fieldseparator.equals("\\t") ? '\t' : getFromUnicode(fieldseparator);
}
return defaultDelim;
}
private static Character getFromUnicode(String fieldseparator) {
Integer i = Ints.tryParse(fieldseparator);
return i != null ? String.valueOf(Character.toChars(i)).charAt(0) : fieldseparator.charAt(0);
}
private static boolean isNotEmpty(String fieldseparator) {
return fieldseparator != null && !fieldseparator.isEmpty();
}
对于下面的JavaScript函数,我试图找出如何降低认知复杂性。
如何降低给定代码段的复杂性?我在Sonarqube中得到了这个错误-->重构这个方法,将其认知复杂度从21降低到允许的15。
我得到声纳警告来降低它的复杂性。我如何重构下面的代码,将其认知复杂度从18降低到允许的15?
我有一个方法,把罗马数字转换为公共十进制。我在这里用了一个循环和很多“if”条件。我的IDE中的SonarLint告诉我,这种方法的认知复杂度为33,而允许的复杂度为15。我怎样才能减少这个?我不介意如何解决这个问题。等待你的赔偿!