【发布时间】:2018-04-30 03:01:42
【问题描述】:
我在 setHeader 中有 139 个开关案例
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;
}
}
它显示声纳问题。您能否提出任何降低复杂性的解决方案。
【问题讨论】:
-
139 个开关...我只是想象它的样子:|可能是
Map?Map<Enum, Consumer<HeaderDTO>>? -
如此大量的案例可能暗示这 139 种行为应该存在于该类之外的其他地方。使用
Map作为@Eugene 可能会解决SonarQube 问题,但不要将此表面修复作为停止考虑代码改进的许可。 -
@Jubobs 如果 OP 真的有这么多可能性怎么办?我认为任何类型的重构都没有帮助
-
顺便说一句,您可以在这里接受答案...meta.stackexchange.com/questions/5234/…