gpt4 book ai didi

java-8 - 该方法 "setHeader"的圈复杂度为139,大于授权的10

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

我在 setHeader 中有 139 个 switch case

private static void setHeader(String headertableField, String headerValue) {
switch (headertableField) {
case AUS:
headerDTO.setAudval(StringUtils.getTrimValueAfterNullCheck(headerValue));
break;

case AXL:
headerDTO.setAxlfieldl(StringUtils.getTrimValueAfterNullCheck(headerValue));
break;

................
..................
default:
break;

}
}

它显示 Sonar 问题。您能否建议任何降低复杂性的解决方案?

最佳答案

尤金的答案非常好,但你可以更进一步,在枚举中使用相同的逻辑

enum HeaderField {
AUS(HeaderDTO::setAudval),
AXL(HeaderDTO::setAxlfieldl);

private BiConsumer<HeaderDTO, String> fieldSetter;

HeaderField(BiConsumer<HeaderDTO, String> setter) {
fieldSetter= setter;
}

public void setField(HeaderDTO headerDTO, String value) {
fieldSetter.accept(headerDTO, value);
}
}

然后你就可以使用它了:

HeaderField.AUS.setField(headerDTO, "value");
HeaderField.AXL.setField(headerDTO, "axl");

关于java-8 - 该方法 "setHeader"的圈复杂度为139,大于授权的10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50059608/

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