【发布时间】:2015-10-21 10:40:43
【问题描述】:
许多代码分析工具(如声纳)如果使用多个 is-else 来代替用于圈复杂度的多个 is-else ,则会为 switch case 抛出错误。是否有一个数字应该是何时应该使用 if else 以及何时应该使用 switch case 的阈值? 说如果它是一个 50 的案例,为了降低圈复杂度,应该使用 switch 案例吗?如果你能用一个例子来支持你的答案会很好吗?
【问题讨论】:
-
如果输入有 50 个可能的分支,则代码需要进行一些硬重构。
-
可以是50个匹配然后设置特定值?
-
不应该。可能是一些设计决策出错了。但是如果真的有这么多可能的分支,使用确定性自动机,值将用 CC = 1 计算。或者我猜是一些键值值结构,就像任何实现 Map 接口的东西。
-
这是有道理的,但是否有一个数字告诉我们何时应该使用 switch 以及何时使用?
标签: java if-statement switch-statement sonarqube cyclomatic-complexity