java项目中要不要废弃使用switch

先看switch是怎么产生的:

很久以前,计算能力很昂贵,电脑性能很差,人们便想着法子的提高执行效率
先看看if(test==0)的处理逻辑:
先是把test的值放在一个寄存器中,然后把0放在另一个寄存器中,然后做减法,然后根据结果再判断是否执行后面的语句

再看看switch的处理逻辑:

switch是在编译阶段就将判断条件和子函数地址逻辑绑定了,真正执行的时候,直接将test映射到对应的地址中就行了。
而且break的出现是为了解决当时goto 任意一行的问题的,代表本次逻辑结束
很明显,break的效率确实要比if好点,但再一想,也没有太本质的区别,无非就是提前加载么

switch优点:

1、代码整洁,相比if-else,但也好不到哪里去
2、执行效率快点,也是相比于if-else

switch缺点:

1、忘记写break,很容易造成bug
2、太多的break,感觉代码就很冗余,但不写又不行
3、局限的case判断条件

总结:

那么以现在计算能力,switch比if好的那点执行效率,完全可以忽略不记了,而且sun官方也指出对if进行过效率优化。
所以,switch的优点基本被缩小到没有了,而他的缺点却一直存在,而且基本每个java开发者都被switch坑过。
那么我们为什么还要继续用switch呢?

网友有一种说法,逻辑判断多于5次,就用switch,少于5次,就用if-else
或者另一种说法,5000次以上的逻辑判断,用switch执行比用if快将近一倍
对于这种说法,我是这样理解的,首先我们想想,大段大段的逻辑判断,是不是本身就有问题,
我们首先应该想到的是设计问题,为什么要出现这么多逻辑判断,能不能规避,而不是一开始就想用哪个能更快
而且,java是一个面向对象的语言,如果大段大段的逻辑判断,那不就是过于面向过程了么,这是不是又违背了java设计的初衷了呢

最后补充一点,我们还有设计模式,可以想办法替代掉这种大段的逻辑判断,详细可以去搜搜替代ifelse的方案