【发布时间】:2011-11-28 03:24:01
【问题描述】:
我用的是一个switch语句,有13个case,每个case只有一行返回值。
McCabe 将其涂成红色。有没有更简单的方法来编写一个大的 switch 语句?读起来似乎并不复杂,但我不喜欢默认设置变成红色。如果其他人在我的代码上使用相同的工具并看到红色的东西,他们可能会认为我很愚蠢:-)
编辑:我将不同的 SQL 类型映射到我自己的更抽象的类型,因此减少了类型的总数。
case Types.TIME:
return AbstractDataType.TIME;
case Types.TIMESTAMP:
return AbstractDataType.TIME;
case Types.DATE:
return AbstractDataType.TIME;
case Types.BIGINT:
return AbstractDataType.NUMERIC;
case Types.DECIMAL:
return AbstractDataType.NUMERIC;
等等……
【问题讨论】:
-
如果你解释一下为什么你在一个 switch 中有 13 个 case 以及为什么你不能使用多态性或 Map 来做同样的事情会更容易。
-
同意。你能给我们看看代码吗?
-
您可以改用EnumMap
-
+1 用于地图,虽然它们只会隐藏复杂性(因此该工具不会抱怨),但不会降低复杂性。您的用例更像是一个注册表而不是 if-else 条件,因此地图可能更适合。
标签: java coding-style complexity-theory switch-statement metrics