许多代码分析工具,如用于切换案例的声纳抛出错误,如果使用而不是多个is-else用于圈复杂度。是否有一个数字应该是一个阈值,当一个人应该使用if else和什么时候应该使用switch case? 如果它的情况为50,为减少圈复杂度,应该使用开关盒?如果你能通过一个例子支持你的答案会好吗?
答案 0 :(得分:0)
用另一个问题回答这个问题。
您愿意阅读:
if(cond1)..
else if(cond2)...
else if(cond50)...
else ...
或
value = map.get(key)
如果有太多可能的情况,那么开关或看起来不合适,应该用key-value structure
或state machine pattern
替换 - 如果分支真的很复杂。
您可以在此处找到示例实现:
至于何时使用if或switch,请记住,switch不能接受以下类型:
long
,double
,float
,boolean
所以当你有这样的输入时,切换显然不是一个选择。
我不会使用数字作为指标来使用switch
或if statement
。但是有一个例外,如果输入只能有2个可能的值,最好使用if。即使是声纳也应该建议你。
也就是说,switch
通常比if语句系列更具可读性。作为一个重要的决策因素,除了可读性之外,在switch语句中可能存在可能需要相同执行路径的值组。它基本上是goto
的更安全版本。与if不同,其中每个结果通常都绑定到特定的执行路径。