OICQCO 2021-12-25 22:09 采纳率: 20%
浏览 96
已结题

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

最近看了一些源码和别人写的代码,为什么很多程序员不用 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 。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 专家已采纳回答 1月1日
  • 修改了问题 12月25日
  • 创建了问题 12月25日

悬赏问题

  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api