范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

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

动力能耗配置静音,看比亚迪汉如何逆袭奥迪A6L拿比亚迪汉跟奥迪A6L做对比,很多人会觉得完全没有可比性。一个是德国传统豪华品牌,一个是中国的后起之秀更何况一个售价20几万,而另一个则要40到60几万,大部分消费者买车的时候根本马斯克承认FSD有待改进,外界却称特斯拉在开空头支票虽然特斯拉在自动驾驶领域一直处于领先地位,但其较高的事故率也引起了不少质疑。近期,美国国家公路交通安全管理局就对特斯拉的自动驾驶系统开展了调查,调查范围涉及美国国内约76。5万辆特锂电池之父预测苹果汽车将在今年正式公开,最早2025年上市苹果要造汽车已经是众所周知的事实,不过苹果在此事上的处理方式一直比较低调,并没有频繁告知外界项目的推进速度。但是,这并没有阻止人们对此事的推测,近日,一位业界权威人士对此发表了自己9。38万元起,颜值高空间大实力强够智能,选比亚迪海豚就对了8月29日,纯电新物种比亚迪海豚在成都车展萌动上市,四款车型的售价区间为9。38万元12。18万元,同时为用户带来包括金融服务维修保养数据流量等多重好礼。伴着青春劲舞,比亚迪海豚化雷军投百亿在北京成立小米汽车,从20000份简历里筛选出300人团队9月1日,小米集团宣布,小米汽车有限公司正式注册成立,公司法人为雷军,注册资本达100亿元。今年3月底,雷军在演讲中宣布了造车计划,并表示这将作为自己的最后一次创业,押上人生全部声蔚来长安街事件重演?车主反映ES8在路中升级,造成一小时拥堵近日,有蔚来车主在论坛反应,自己出差时远程点击了升级,让家人正在开的ES8停在了路中间,而客服表示升级无法停止,因此车辆在路中间滞留了一小时,造成了路段拥堵。这位车主希望蔚来汽车的1分钱充电非长久之计,百万投入微薄利润,充电站效益成行业议题伴随着电动汽车的快速普及,国内充电站建设也展现出了中国速度。然而据央视报道,目前市场上共用充电桩利用率普遍不达预期。部分地区甚至出现了因充电桩利用率过低,运营商不得不采取低价抢客户每车60万,日本加大电动汽车补贴,但燃料电池汽车补贴仍达250万燃油车时代,丰田本田在全球市场攻城略地。但新能源时代到来,日本的燃料电池路线不被市场认可,而在飞速发展的电动车领域,日系车企还没有拿得出手的产品。特斯拉凭借一己之力拉动了电动汽车行广汽埃安480kW超级快充9月量产,5分钟充电200km,寿命达100万km广汽埃安超级快充技术到来的速度比我们预想都要更快。8月30日,广汽埃安展示了搭载超级充电技术的A480超级充电桩,配合电压880V的超倍速电池,可实现功率480kW的6C高倍率充电累计销量突破10万,比亚迪汉将迎来新车型,搭载华为5G系统自去年公布以来,广受好评的比亚迪汉一年累计销量已经突破10万,达到了101309辆,成为了最受市场欢迎的中高端新能源车及中国品牌品牌中大型轿车市场的No。1。据媒体报道,比亚迪汉的丰田自动驾驶汽车撞倒残奥运动员,终究还是没能逃过东奥负面影响在东京奥运会开幕前夕,作为最大赞助商的丰田汽车宣布撤销所有广告,社长也不再参加开幕式。有媒体报道称,做出这样的决定,是因为丰田认为在疫情得不到有效控制的情况下,在奥运打广告会影响到
脱贫攻坚全面胜利!奋战乡村振兴贡献优炫力量在打赢脱贫攻坚战的豪迈征程中,这一奇迹的创造离不开各行各业前赴后继的努力,以科技的触角伸向精准帮扶,展现了作为国内数据库行业的头部企业的社会责任感和担当。自脱贫攻坚战打响以来,优炫全新品牌备受市场期待宝能汽车行稳致远纵观如今中国车市,不难发现其庞大潜在的市场,正因为如此,宝能集团将汽车产业纳入企业发展的重要战略布局之中,于是,2017年宝能控股企业宝能汽车就此诞生。入局造车以来,宝能集团对宝能担心孩子寒假假期玩疯了?不如报名科大讯飞学习机寒假特训班时光如水又一年,又到了一年一度的春节。过年本来是一件非常幸福快乐的事,但有些家长却开心不起来,因为自家的孩子学习成绩实在是太差了。进入寒假以来,熊孩子更是玩疯了,下学期跟不上怎么办HCK哈士奇x可口可乐复古冰箱冷饮爱好者不可错过的神器春夏秋冬这一年的四个季节都被人们所喜爱着,但是要论起喜爱的理由,夏天可以说是最特殊的一个了,因为春秋有凉爽的气候冬天有浪漫的雪花,夏天的烈日与高温好像并不能给人带来喜欢它的理由。但你真的懂吗?Java基础语法(语法位运算JavaDoc等)一。注释标识符关键字1。注释(comments)平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己编写的代码,但是当项目结构一旦复杂起来,我们就需要用到注释了!注释并不会被蚌埠住了!一份硬核的阿里P8高并发实战笔记,吊打面试官不在话下有小伙伴爆料,前段时间收到了阿里的面邀,结果一不小心把面试官给吊打了这次面试一共五轮,在第四轮交叉面的时候,问了他即将到来的双十一大促,千亿流量高并发秒杀系统设计,并且关于各种场景眼见为实,来瞧瞧MySQL中的隐藏列在介绍mysql的多版本并发控制MVCC的过程中,我们提到过mysql中存在一些隐藏列,例如行标识事务ID回滚指针等,不知道大家是否和我一样好奇过,要怎样才能实际地看到这些隐藏列的JVM垃圾回收的三色标记算法实现,内容太干三色标记法是一种垃圾回收法,它可以让JVM不发生或仅短时间发生STW(StopTheWorld),从而达到清除JVM内存垃圾的目的。JVM中的CMSG1垃圾回收器所使用垃圾回收算法最牛逼的Java日志框架,性能无敌,横扫所有对手。。Logback算是JAVA里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在2017年,好几年都没有更新logback的兄利用Jackson序列化实现数据脱敏几天前使用了Jackson对数据的自定义序列化。突发灵感,利用此方法来简单实现接口返回数据脱敏,故写此文记录。核心思想是利用Jackson的StdSerializer,JsonSe一个error引发两小时的SpringMVC源码debug前言最近入职新公司,先临时接手一个认证项目,对于本人这种有代码优雅强迫症的,看到不爽的代码毫无疑问就是改!改!改!然而改完之后前端给我反馈了接口总是报401错误。我的内心我草?难道