为什么很多程序员不用switch,而是大量的if……else if?:相比之下Switch可以让人更宏观的去分析代码。编写代码和阅读代码需要宏观和微观两种视角,宏观看架构和
相比之下Switch可以让人更宏观的去分析代码。编写代码和阅读代码需要宏观和微观两种视角,宏观看架构和数据走向,微观看语法和功能的片段。
有些朋友编码喜欢走一步看一步,越往后越发现前面留了好多坑需要后期再做进一步修正。有些朋友不把数据的分支想全面就会用很多if…else…来磊代码。
不是不想用Switch,只是因为编码时,太随性。所以想做专职的开发人员,对代码的宏观视角是必不可少的,并且编码时还要为今后的修改留有余地。
答案:主要因为switch不适合业务系统的实际复杂需求,业务不断的变更迭代,一更改需求,条件的复杂度高了,switch无力处理。
那么什么时候适合switch,它的场景是:基于单一变量的值(如枚举),这样的可读性比if条件更清晰。
从上面的场景来看,实在太局限,我来简单说一下它的一些缺点吧:
1. 现实的业务场景很复杂,条件不单一,一旦需求变更,维护代码相当崩溃。
2. switch经常忘记写break,估计很多人一不小心就忘记写了。如果你看过google的代码规范,你会发现,Google对switch的要求非常多。
其实switch有人还在用也有一部分是历史原因,但是随着科技的发展,原有的设计以及落后了。
有些编程语言,如Python都没有switch这种语法。当然也有部分新语言Golang和Kotlin还是继承下来,但是又把switch包装了一下,去掉了令人误会的语法,这才让switch变得灵活起来了。 如果不封装,很难用。
通过上面描述的缺点也就是if语句更灵活的地方,根据业务进行逻辑条件编写,可维护性高。同时只要写的代码质量高,可读性也就会更高。
现实的业务实际是很复杂的,我也不建议一定要用大量的if……else if,而是应该尽早返回来减少嵌套,这样增加了可读性以及降低维护的成本。
为什么很多人纠结于这些问题?什么用if。。。else。。。什么不能用goto之类的?
这些人真的做过项目吗?
谁说程序员不用switch的?大量的if。。。else有什么问题吗?
以这些初级到不能再初级的问题来划分一个程序员的好坏,来判定能力的高低吗?
我从来不觉得有什么语句是优于其他语句的,也不觉得什么语句是能用或者不能用的。都得放到实际项目中去。满足项目需要是第一要素。
如果有一个程序员能把一个项目全部都用if。。。else完成,我觉得也是很牛逼的。我曾经就全部用if。。。else完成了一个条件分支还算比较多的功能(闲的蛋疼),分支一多,这些判据之间的逻辑关系会让人脑壳疼。离职时转给其他同事的时候这部分就非常头疼。你说这部分难吧,也不难,语法简单逻辑清晰。但是要做什么改动吧,好像也不太敢,条件太多了,牵一发而动全身啊。我估计这代码传个两三代,要么彻底推倒重写,要么就变成了祖传代码。。。
switch只能用于简单判断,不支持表达式。
没有if else 使用方便。
作为程序员来说,我更喜欢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。
因为最开始情况少,几个else if没了,后面增加需求,情况复杂了,程序员一直加所以多了
国内程序员只要能把程序弄出来好用就行了,谁还在意代码的严谨和运行速度呢?同样的多分支判断,switch比else if强太多了,比如10个分支判断,前者判断一次,后者依次判断10次!
不是尽量别用,而是不合适没法用,合适得时候该用还是用。
比如说,变量i要求大于10,小于20,一条if(i>10&&i<20)就解决了问题,如果用switch,那岂不是自找麻烦。
又如变量i有5个固定返回值,10,20,30,40,50,那么用switch比较适合,用if也可以。
对于多变量判断,多重判断,复杂判断,还是靠if,switch几乎无能为力。
所以,switch多用在简单的枚举,对于很复杂的条件判断几乎无能无力,if则用在所有判断时候。简单的枚举又不很多,所以if最常见
会提这个问题的,估计根本没多少开发经验。实际项目中,基本上都是用if的。
我就直接说最关键的原因吧: switch 只能对一个变量进行处理,但是实际情况是业务逻辑通常需要判断多个变量。
一些人可能会说,当前就一个判断一个变量啊,可以用swich。然而,这个想法也是局限性的,因为要考虑后期可能会增加变量来判断。仅仅少数情况才可以用switch, 大部分都建议用if
首先题外话不用switch是因为没钱。
其次,switch用法特殊,一般用于固定的几个值去比较判断,要是你来个复合逻辑表达式就不太好写。而且,switch不直观,代码层次也没有if else简单明了,每个里面还要用break中止。且实际编写代码过程中能用switch的,用if else均能替代。有点类似continue,鸡肋。
最后,并不是所有编程语言都有的switch,为什么没有?因为有替代啊
华裔女赌王就此没落,生前让所有 浓情端午粽飘香,青浦邀你“云体 上海:“云端”展现端午节文化内 “甜咸大战”!明星艺人们喜欢什 如何做一个男人喜欢的情人(如何 当你和你同时出现在同一个场景中 如何在昏暗的光线下设置快门速度 教育在生活中的价值是什么? 世上做坏事的人死后会面临什么因 拜登就任总统后的第一步是什么? 同意/不同意:人生最重要的目标 二战后,德国在调和分歧方面做得 亚伯·林肯恨白人吗? 一个编辑能把你的故事毁得有多严 现在的iPhone6还能坚持再用一年 曹操为什么不杀司马懿? 现在买房是不是最便宜的时候,现 我身边的农业银行营业厅关了,AT 欧洲媒体评选CBA最有实力球员, 荣耀play的6+128和荣耀8X的6+128 蚂蚁集团是科技公司还是金融公司 请问机友华为mate30P与华为mate3 听说老詹修剪一次指甲需要5小时 为什么说宝宝“一月睡二月哭三月 戴笠人称戴老板,这个是怎么叫出 没有工作能一次性补缴社保么? 我想知道定向师范生和免费师范生 肺癌引起的咳嗽是怎样的呢? 5000mAh电池的5G手机推荐吗?要 恒大亚冠表现“差强人意”,你觉