缺点一. 语法正确,逻辑错误
这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生的事情,而这个语法错误在诸多的语法检查器上没有办法检查出来的,因为从语法角度来说是正确的!可是代码的处理逻辑却是错误的!用if来重写这段代码的话,就不会发生这种错误。图片图片上面的代码为了保证正确我添加了else做一个逻辑上的保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦我忘记写花括号的时候,语法编译器是会提示我添加的,甚至可以使用eslint这种的工具强制我使用花括号,这样就不会犯语法错误了,一旦出现bug,那么肯定是我逻辑上的问题了。缺点二 .死板的语法switch尽管对于break很宽容,但是对判断条件很严苛,case后面只能跟常量,如果你用C编写的话,甚至只能用int类型作为判断条件。对于我们这么潇洒自如的程序猿来说,这种限制实在是太麻烦了,用if的话,别说是常量了,我用函数都可以,真正做到方便快捷。缺点三 .需要子函数来处理分支这个缺点跟缺点一有关,为了防止漏写break,因此建议把分支处理方法独立成一个子函数来处理,这样在阅读代码的时候就会减少忘记写break带来的bug,那么用if来写的话,我想怎么写就怎么写,非常随意自由,但是这也导致了代码的可读性大大降低。switch 的 优点既然switch有这么严重的缺点,那怎么在所有语言中依然会存在呢?那就说下switch的优点吧,它的优点也刚好是它的缺点。在很久很久以前,那时候的电脑性能还不如一台小霸学习机的时候,聪明的计算机科学家为了提高计算机的处理速度,将一些逻辑分支处理方法简化了一下,把一些需要做逻辑判断的操作给固定死,然后只要查表一样一个一个对一下就能做出相应的反应了。比如说a=0的判断,switch和if在cpu上面的处理方式是不一样的,switch是在编译阶段将子函数的地址和判断条件绑定了,只要直接将a的直接映射到子函数地址去执行就可以了,但是if处理起来就不一样了。它首先要把a的值放到CPU的寄存器中,然后要把比较的值放到CPU的另一个寄存器中,然后做减法,然后根据计算结果跳转到子函数去执行,这样一来就要多出3步的操作了,如果逻辑判断多的话,那么将会比switch多处许多倍的操作,尽管寄存器操作的速度很快,但是对于当时的学习机来说,这点速度根本不够用啊。

switch的优缺点相关推荐

  1. 【设计模式】策略模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

    文章目录 一.策略模式简介 二.策略模式适用场景 三.策略模式优缺点 四.策略模式与其它设计模式 五.策略模式代码示例 1.促销策略接口 2.满减促销策略 3.返现促销策略 4.空促销策略 5.促销策 ...

  2. Java中的 Switch 是如何支持 String 的?为什么不支持 long?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:jitwxs http ...

  3. svn merger的时候 报远程主机强迫_SVN与Git比较的优缺点差异

    一. 集中式vs分布式 1. Subversion属于集中式的版本控制系统集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最 ...

  4. git pull 覆盖本地_SVN与Git比较的优缺点差异

    一. 集中式vs分布式 1. Subversion属于集中式的版本控制系统 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出 ...

  5. 杂牌手柄模拟xboxone手柄_手机就能玩Switch游戏,蛋蛋模拟器+盖世小鸡X2手柄体验...

    最近收到一个很爆炸的消息,国外大神开发出了EGG模拟器(蛋蛋模拟器),让手机也能玩Switch游戏,一直垂涎Switch游戏体验的我怎么能错过呢,必须一探究竟. 据悉,EGG模拟器支持100多款Swi ...

  6. Android:四大架构的优缺点,你真的了解吗?

    前言 前不久刚结束对 20 模块项目的第 3 轮重构,一路见证 MVC.MVP.Clean 的优缺点并形成自己的体会. 近期在总结工作经验的同时,开始写博客.顺便开源了我设计的 ViaBus 架构. ...

  7. 【Day15】介绍下 promise 的特性、优缺点,内部是如何实现的,动手实现 Promise

    介绍下 promise 的特性.优缺点,内部是如何实现的,动手实现 Promise Promise 基本特性 Promise 的优点 Promise 的缺点 简单代码实现 面试够用版 大厂专供版 Pr ...

  8. selenium 处理cookie及switch的使用

    1 selenium 处理cookie 通过driver.get_cookies()能够获取所有的cookie # 把cookie转化为字典 {cookie['name']: cookie['valu ...

  9. Android:四大架构的优缺点,你真的了解吗? 1

    声明转载于作者:KunMinX 原文链接:https://www.jianshu.com/p/9ef... 前言 前不久刚结束对 20 模块项目的第 3 轮重构,一路见证 MVC.MVP.Clean ...

最新文章

  1. 最新!中国内地大学ESI排名出炉:362所高校上榜,南方科技大学、深圳大学、暨南大学表现出色!...
  2. Dell 2850服务器磁盘阵列两块硬盘离线恢复过程
  3. internal error:failed to get path of 64-bit Program Files directory
  4. Final Cut Pro快捷键
  5. String,StringBuffer,StringBuilder的区别
  6. linux的mysql主主_Linux下指定mysql数据库数据配置主主同步的实例
  7. Git的多人协作和分支处理测试
  8. 数据数据库学通MongoDB——第一天 基础入门
  9. 一个简单的性能计数器:CodeTimer
  10. iptables学习笔记:端口转发命令优化
  11. 《IT项目管理那些事儿》——新浪微博抽奖活动
  12. 一种小封装485芯片
  13. 硬件驱动为什么要有WHQL数字签名
  14. 计算机桌面文件删除不掉是怎么了,如何解决电脑桌面文件无法删除问题
  15. 目标检测结果IOU不同取值的意义(0.5:0.95等)
  16. 使用Kotlin+JetPack 从零开发自己的日记App
  17. 两种无密码解锁iPhone锁屏密码的方法
  18. C++数论库:NTL
  19. Android使用SurfaceView开发《捉小猪》小游戏 (一)
  20. JS实现文档下载兼容谷歌、火狐、IE

热门文章

  1. iOS 9:四、设置信任
  2. php框架使用率排行榜2018,中国上网人数统计?2018互联网上网人数分布排名
  3. 深度学习AI美颜系列---人脸数据增强
  4. Math.log()是以常数e为底数的对数
  5. 【html】圣诞节限定圣诞树
  6. 开机两个小时后定时关机
  7. vue搭配element, el-input出现高频无法粘贴文本的情况
  8. 管理的挑战——软技能在项目管理中的应用案例(转)
  9. 实现财务自由 之 A 股上市公司的年报(年度财报)查阅查看、下载地址、以及下载的方法
  10. 从联想ThinkStation工作站,窥见工具文明的新纪元