安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

为什么很多程序员不用switch,而是大量的ifelseif

6月6日 栀璃鸢投稿
  答案:主要因为switch不适合业务系统的实际复杂需求,业务不断的变更迭代,一更改需求,条件的复杂度高了,switch无力处理。
  switch优点
  那么什么时候适合switch,它的场景是:基于单一变量的值(如枚举),这样的可读性比if条件更清晰。
  switch缺点
  从上面的场景来看,实在太局限,我来简单说一下它的一些缺点吧:
  1。现实的业务场景很复杂,条件不单一,一旦需求变更,维护代码相当崩溃。
  2。switch经常忘记写break,估计很多人一不小心就忘记写了。如果你看过google的代码规范,你会发现,Google对switch的要求非常多。
  switch的封装才更灵活
  其实switch有人还在用也有一部分是历史原因,但是随着科技的发展,原有的设计以及落后了。
  有些编程语言,如Python都没有switch这种语法。当然也有部分新语言Golang和Kotlin还是继承下来,但是又把switch包装了一下,去掉了令人误会的语法,这才让switch变得灵活起来了。如果不封装,很难用。
  IF语句的好处
  通过上面描述的缺点也就是if语句更灵活的地方,根据业务进行逻辑条件编写,可维护性高。同时只要写的代码质量高,可读性也就会更高。
  建议
  现实的业务实际是很复杂的,我也不建议一定要用大量的ifelseif,而是应该尽早返回来减少嵌套,这样增加了可读性以及降低维护的成本。
  我个人觉得switch其实非常多余。
  1大部分场景,都是2到3个可能分支,用个ifelse就可以了,除非有4个以上分支,太多else显得不好看,才考虑用switch。
  2switch限制多。switch必须是常量变量。if后面可以写任意表达式。
  3用法复杂,case后面要么break,要么return,要是不写,居然还会继续执行剩下的分支,对于新手来说分分钟掉坑。
  4写法上其实也不比ifelse优雅简洁,switchxxxcasexxxx。
  所以,switch徒增复杂性,真的不怎么实用。
  如果有10000种switch的可能性,有1000000个值需要被处理,怕是你们说的这些个switch的好处就完全消失了,预期平均每次要比较5000次,1000000个值,总计要比较50亿次,不知道你们的CPU是啥主频能扛得住这个计算量,针对这种情况的终极武器还是hash,根据不同的语言,hash的value可以是匿名函数,可以是接口的不同实现,用hash来快速确定处理算法,而不是switch
  作为程序员来说,我更喜欢switch的结构,更直观更容易找到相应的代码块。不过为什么很多程序员不用Switch,而是使用大量的if。。。elseif的结构,甚至像Python已经不支持原生Switch语法了?
  这个原因很简单,因为switch语法结构最后编译还是通过if。。。elseif来完成代码的,所以从效率角度来说和if。。。elseif一样的。但是switch对比条件比较单一,绝大多数支持switch的编程语言都支持等于比较,也就是说变量只能等于case中的条件才会执行代码块。但是现实情况中,对比条件绝大多数比单一等于运算要复杂得多,因此很多程序员就直接使用if。。。elseif。但是if。。。elseif的结构,后期维护起来会比较不清晰,毕竟没有Case。。。Break那么直观。但是添加一些注解应该还是能解决这个问题的。
  所以,我现在能使用Switch的时候还是会使用switch,毕竟后期代码维护起来方便点。不过更多时候还是用if。。。elseif。
  switch只能用于简单判断,不支持表达式。
  没有ifelse使用方便。
  从CC来看,当分支较多且switch要比较的值是连续的话,执行速度远远远远快于if,因为switch是直接跳到目标代码执行的,而if则需要执行很多条语句,慢的不是一点点,一般编译器会根据分支数量和比较的值是否连续生成不同汇编代码,如果编译器判定不能提升速度的话,switch生成的汇编代码和if是一模一样的没有任何区别。
  至于很多人不用switch我觉得可能是:
  1。为了方便写代码,思维习惯随手就用if写了;
  2。可能根本就不懂为什么要用switch吧。
  相比之下Switch可以让人更宏观的去分析代码。编写代码和阅读代码需要宏观和微观两种视角,宏观看架构和数据走向,微观看语法和功能的片段。
  有些朋友编码喜欢走一步看一步,越往后越发现前面留了好多坑需要后期再做进一步修正。有些朋友不把数据的分支想全面就会用很多ifelse来磊代码。
  不是不想用Switch,只是因为编码时,太随性。所以想做专职的开发人员,对代码的宏观视角是必不可少的,并且编码时还要为今后的修改留有余地。
  不是尽量别用,而是不合适没法用,合适得时候该用还是用。
  比如说,变量i要求大于10,小于20,一条if(i10i20)就解决了问题,如果用switch,那岂不是自找麻烦。
  又如变量i有5个固定返回值,10,20,30,40,50,那么用switch比较适合,用if也可以。
  对于多变量判断,多重判断,复杂判断,还是靠if,switch几乎无能为力。
  所以,switch多用在简单的枚举,对于很复杂的条件判断几乎无能无力,if则用在所有判断时候。简单的枚举又不很多,所以if最常见
  国内程序员只要能把程序弄出来好用就行了,谁还在意代码的严谨和运行速度呢?同样的多分支判断,switch比elseif强太多了,比如10个分支判断,前者判断一次,后者依次判断10次!
  因为最开始情况少,几个elseif没了,后面增加需求,情况复杂了,程序员一直加所以多了
投诉 评论 转载

催收不经过本人同意可以上门调查吗?所有催收公司的营业执照上都只会写:受金融机关委托通知负债人。注意:通知,只有通知的权利。自从2016年发生在山东的于欢辱母杀人案后,讨债公司就是非法的,上门讨债被认定为黑恶势力……为什么很多程序员不用switch,而是大量的ifelseif答案:主要因为switch不适合业务系统的实际复杂需求,业务不断的变更迭代,一更改需求,条件的复杂度高了,switch无力处理。switch优点那么什么时候适合sw……截至2022年五月,天玑9000手机共四款,理性分析优劣让你截至2022年五月,天玑9000手机共四款,理性分析优劣让你不会选错。第一款:redmiK50Pro优点:2K屏;高赫兹刷新率;续航很实用,充电20分钟就能搞定。……工信部2021年我国APP总量持续下降其中游戏类APP数量仍央广网北京2月4日消息日前工信部发布2021年我国移动应用程序(APP)发展情况。数据显示,移动应用程序(APP)总量持续下降。截至12月末,我国国内市场上监测到的APP……为什么有人讨厌指针?指针本质上就是引用()和解引用()操作。structpoint{floatX;floatY;};structpointA{100。00,200。00};实体structpoin……人民日报警告英特尔后,多家美企抢做出头鸟,从网店下架新疆商品自从美国通过禁止进口新疆产品的法案后,美国企业就开始躁动起来,完全不顾自己在华市场。英特尔第一个响应法案,将新疆产品排除出供应链。人民日报也发出警告,认为英特尔将会搬起石头砸自……iphone13香的风已然刮过,iphone14系列概念图,苹果三月份的春季发布会已过去一段时间,关于苹果新品网民们谈论热烈,这两天关于苹果14系列将在九月份上市的事情,更是引起热议,一些网民还积极地曝出iphone14系列概念图。……多个充电宝用一个充电头怎么充电?还是那句话,授人以鱼不如授人以渔。我看了几遍,有点明白你的意思了,就是说你讲白了:第一是想省钱,你10个充电宝你不太想买10个充电头去充电,而且也不太环保。第……苹果又出新品,你会买吗?从来没买过,也永远不会去买!出再多新品我也不关注!原因不外乎以下几点。一,对我来说,国产手机功能已完全满足自己需求,打个电话,发个微信或发个朋友圈做个小广告,转个帐及发个……神州数码签字中国移动21年挖贝网3月21日,神州数码(000034)发布公告,公司下属控股子公司北京神州数码云科信息技术有限公司(以下简称云科信息技术)为中国移动2021年至2022年人工智能通用计算设……刚刚不小心删除了手机里的照片,请问有真正的免费恢复软件吗?有专门的照片恢复软件。很多,建议百度一下,到官方网站下载一个如果刚删除的可以到最近删除里面恢复,在不行看看原文件有没有删除,如果原文件都删除了,也没有备份的话就搞不回来。……任天堂提醒不要撕掉OLEDSwitch屏幕保护膜备受游戏机玩家期待的SwitchOLED游戏机已经发售,新的屏幕虽然在分辨率上没有改变但视觉效果还是有明显提升的,可能是为了更好的保护这块屏幕,任天堂官方提醒玩家,请确保不要撕……
成年人如何选择适合自已的助听器?血奴事件的背后58同城为何至今屹立不倒vivoX70系列预热搭载骁龙888处理器vivoX80王者旗舰,峡谷亮剑8月手机不要乱买这几款是性价比之王好看配置强最值得你购买Go切片内存分配曾经的联通去哪了?联通移动广电电信宽带有什么区别?资费哪个更便宜?Excel求和只会sum函数就out了,这五个求和公式一个比目前最值得购买的几款曲面屏,性能颜值兼备,用着有面子华为称正自研芯片解决方案旗舰手机的5G支持迟早回归Redmi小爱触屏音箱Pro8真实体验,好用,便宜,真香

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利