为什么很多程序员不用 switch,而是大量的if-else-if ?

最近看了一些源码和别人写的代码,为什么很多程序员不用 switch,而是大量的if-else-if ?

分支非常多的 if 和 else if 往往并不是一次写出来的,而是每次增加新功能时就开个新的分支。对于每一个增加分支的人来说,他们都不觉得自己有责任要重构整段代码,因为他们只想用最低的成本把自己要做的事情做完,于是代码质量变得越来越低。一般来说,如果 if 和 else if 分支超过 3 个就可以考虑写成 switch。如果 switch 的分支超过 10 个就可以考虑写成 config,然后专门写一个函数根据 config 来做 mapping。如果需要进行的映射逻辑很复杂,但使用频率很高,可以考虑做一个专门的 rule engine 来处理这件事情,或者是一门 DSL。
当然这是很浅的谈论,如果真正深入下去。
swtich 从字节码上看是优于 if 的,但是从网上测试结果来看在分支很多的情况下能显示出优势,一般情况下还是打不过 if 。

大概是switch比较麻烦,switch的逻辑不好用吧。

因为switch有限制,使用范围上if语句更广一点

可以更好的处理高并发吧

实际工程是长期维护的, 刚开始写的逻辑比较简单, 可能只需要两三个if else, 但是后期维护增加了功能, 又懒得去改原来的if, 就继续if else

可能跟先来后到有关系吧,if else太平民化了
python到3.10才加了switch