您的位置 首页 > 德语词汇

else是什么意思?是时候和else关键字说再见了

今天给各位分享else是什么意思的知识,其中也会对是时候和else关键字说再见了进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

1、全文共1754字,预计学习时长10分钟

2、没有程序员不知道else关键字,If-else几乎遍布于所有编程语言,这种简单的条件逻辑使所有人都很容易理解。

else是什么意思?是时候和else关键字说再见了

3、但优秀程序员的标志是,不使用这个关键字。

4、笔者在开始编程的时候,最大错误之一是在编写条件句时过度使用else关键字,早五年前笔者就告别else了。

5、想一下else是什么意思,其意为“如果满足A就执行这个,如果不满足A就执行那个”。

6、如果A是二进制,就不存在问题——因为只存在两种情况。

7、但是如果A是二进制变量的集合,或者包含着更大的变量,出现问题的机会就可能会出乎意料的大,且难以理解、测试和维护。

8、避免if/elseif,只使用if语句,花时间确保if组的输入条件是互斥的,这样答案就不依赖于执行顺序了。

9、·使用多态性处理复杂的条件情况,使代码更像状态模式。

10、·其保证了主要的执行通道,且有着更少的特殊情况。

11、·其迫使编程人员在每个函数开始时写入处理数据所需的所有条件。

12、例子是这样的:一个信号灯(即信号灯对象)有着三种不同的状态,红色、黄色和绿色,每种状态都有着其自己的一系列规则。规则如下:

13、·假设信号灯目前是红色,则在一定延迟后,状态由红转绿。

14、·然后在另一个延迟之后,状态由绿转黄。

15、不要使用if-else关键字

16、constLightState={\nGREEN:0,\nYELLOW:1,\nRED:2\n}\nvarTrafficLight=function(){\nvarcount=0\n//defaultstate=red\nvarcurrentState=0;\nthis.change=function(state){\nif(count++>=10)return\ncurrentState=state\nthis.go(currentState)\n}\nthis.go=function(state){\nif(currentState==LightState.GREEN){\nconsole.log("Green-->for1minute")\nthis.change(LightState.YELLOW)\n}\nelseif(currentState==LightState.YELLOW){\nconsole.log("Yellow-->for10seconds")\nthis.change(LightState.RED)\n}elseif(currentState==LightState.RED){\nconsole.log("Red-->for1minute");\nthis.change(LightState.GREEN)\n}else{\nthrowError("InvalidState")\n}\n}\nthis.start=function(){\nthis.change(LightState.GREEN)\n}\n}

更简单的方式

17、this.go=function(state){\nif(currentState==LightState.GREEN){\nconsole.log("Green-->for1minute")\nthis.change(LightState.YELLOW)\n}\nif(currentState==LightState.YELLOW){\nconsole.log("Yellow-->for10seconds")\nthis.change(LightState.RED)\n}\nif(currentState==LightState.RED){\nconsole.log("Red-->for1minute");\nthis.change(LightState.GREEN)\n}\nif(currentState!=LightState.GREEN&¤tState!=LightState.RED&¤tState!=LightState.YELLOW){\nthrowError("InvalidState")\n}\n}

或者可以用一个switch代替,不得不合并不同的场景时,它看起来干净得多,而if-else很快就会失控。

18、若干场景良好的情况下,switch语句可能会比if-else语句更快。

19、this.go=function(state){\nif(currentState==LightState.GREEN){\nconsole.log("Green-->for1minute")\nthis.change(LightState.YELLOW)\n}\nif(currentState==LightState.YELLOW){\nconsole.log("Yellow-->for10seconds")\nthis.change(LightState.RED)\n}\nif(currentState==LightState.RED){\nconsole.log("Red-->for1minute");\nthis.change(LightState.GREEN)\n}\nif(currentState!=LightState.GREEN&¤tState!=LightState.RED&¤tState!=LightState.YELLOW){\nthrowError("InvalidState")\n}\n}

可以使用状态模式删除这些代码中的所有if-else关键字

20、在这里,引入了许多if-elseblock/switch语句来保护各种条件,这个状态模式适合这样的场景。它允许对象根据当前的状态有不同的行为,并且用户可以定义状态特定的行为。

21、在这种模式下,开始考虑信号灯的可能状态,然后相应地隔离代码。

22、·对于状态特定的行为,需要有单独的对象。

23、·信号灯中定义的操作将行为委托给当前状态的对象。

24、信号灯:Green(1minute)→Yellow(10seconds)→Red(1minute)

25、varTrafficLight=function(){\nvarcount=0\n//defaultstate=green\nvarcurrentState=newGreen(this);\nthis.change=function(state){\n//limitsnumberofchanges\nif(count++>=10)return;\ncurrentState=state;\ncurrentState.go();\n}\nthis.start=function(){\ncurrentState.go();\n}\n}\nvarRed=function(light){\nthis.light=light\nthis.go=function(){\nconsole.log(("Red-->for1minute"))\nlight.change(newGreen(light));\n}\n}\nvarYellow=function(light){\nthis.light=light;\n\nthis.go=function(){\nconsole.log("Yellow-->for10seconds")\nlight.change(newRed(light));\n}\n};\nvarGreen=function(light){\nthis.light=light;\n\nthis.go=function(){\nconsole.log("Green-->for1minute");\nlight.change(newYellow(light));\n}\n};

输出如下:

26、Green→for1minute\nYellow→for10seconds\nRed→for1minute\nGreen→for1minute\nYellow→for10seconds\nRed→for1minute\nGreen→for1minute\nYellow→for10seconds\nRed→for1minute\nGreen→for1minute\nYellow→for10seconds

好代码与糟糕代码的区别在哪,你get到了吗?

27、我们一起分享AI学习与发展的干货

28、如转载,请后台留言,遵守转载规范

文章到此结束,如果本次分享的else是什么意思和是时候和else关键字说再见了的问题解决了您的问题,那么我们由衷的感到高兴!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023