最近看了一些源码和别人写的代码,为什么很多程序员不用 switch,而是大量的if-else-if ?
6条回答 默认 最新
bostonAlen 2021-12-25 22:55关注分支非常多的 if 和 else if 往往并不是一次写出来的,而是每次增加新功能时就开个新的分支。对于每一个增加分支的人来说,他们都不觉得自己有责任要重构整段代码,因为他们只想用最低的成本把自己要做的事情做完,于是代码质量变得越来越低。一般来说,如果 if 和 else if 分支超过 3 个就可以考虑写成 switch。如果 switch 的分支超过 10 个就可以考虑写成 config,然后专门写一个函数根据 config 来做 mapping。如果需要进行的映射逻辑很复杂,但使用频率很高,可以考虑做一个专门的 rule engine 来处理这件事情,或者是一门 DSL。
当然这是很浅的谈论,如果真正深入下去。
swtich 从字节码上看是优于 if 的,但是从网上测试结果来看在分支很多的情况下能显示出优势,一般情况下还是打不过 if 。本回答被专家选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报 编辑记录无用 1