不要使用'else {}'(2019)

2021-04-03 01:19:46

如果 - 自人文首次开始编码以来已经存在。它是我们系统的核心,条件陈述对于程序流控制至关重要。

维基百科 - ......条件表达式和条件构造是编程语言的特征,它根据程序员指定的布尔条件是否评估为True或False ......。选择基于某些条件的控制流程来执行不同的计算或操作。

只有一秒钟,想想一个简单的IF - else条件。就像你想向一个新人编码的人解释它一样。有想法吗?甜的!我们走吧

你的思想可能会去这样的东西(或者至少是它的变体)

如果为true {..当真实}}否则{..做东西时是假的}

我的意思是你为什么不呢?我是一个IF - else的声明,它做了它的工作,你可以像你想要控制流程一样多嵌套它们!哎呀,我们甚至可以抛出功能,检查出来!

如果为true {如果true {dosomething()} else {dosomethingelse()} elselly if {} else {}

我们想创建一个程序来模拟调酒师移位啤酒。客户进入他的名字和年龄,如果年龄超过18岁,则该调酒师仅服务于请求。

Func Givemeabeer(名称:字符串,带年龄:int){print(" hello!")如果年龄> = 18 {print("肯定的东西\(名称)\ n" )印刷("在这里,你走了。干杯!")} else {print("抱歉,你不足以喝\(姓名)")} //或如果你是像我//像我//这样的函数怪癖,你可能已经使用了这样的东西,如这种肮脏的努力赠品(名字:字符串,带有年龄:int){打印("你好!")如果candrink(年龄){ okgivebeer(to:name)} else {underagealert(to:name)}}

好的,让我们抛弃'别的'并考虑条件流动以下方式:

如果 ! true {打破模式和退出} ...继续正常//而不是如果为true {.. do stuff stuff} else {.. do stuff false}

一般来说,在解决问题时,我们的思想发现使用我们可以使用的工具来解决问题的最佳解决方案。换句话说,我们拥有解决方案的工具,更重要的是绘制到达解决方案的路径。有意义吗?

在编码项中,我们可以使用的工具是变量(int,bool,float,array ..),函数,条件(如果 - else,switches),枚举,尝试捕获...等等这些工具的方式我们可以使用它们是引导我们来写下我们的解决方案。

所以,逆转我们对IF的理解,如果我们的大脑迫使我们的大脑不同地思考逻辑,我的意思是我们现在有一个额外的工具!

Func Givemeber(名称:字符串,带年龄:int){打印("您好!")如果年龄< 18 {打印("对不起,你是不是老够喝\(名称)")返回}打印("确定的事情\(名)\ n")打印(#34 ;在这里你走了。干杯!")} ///现在我必须包括这个版本,我也不包括吗? func givemeabeer(名称:字符串,带年龄:int){print(" hello!")如果!candrink(年龄){underagealert(to:name)return} okgivebeer(to:name)}

正常流量保持在缩放到零。减少了“else {}”贴的丑陋的水平凹痕

2014年,苹果推出了Swift 1.0,它代表干净,快速高效。它有一个特别有趣的机制,称为“警卫”。警卫只是一个条件断言检查。在普通的英语这样的情况下:'确保条件有效,否则返回'

如果你是那个认为迅速的人之一,那么如果只是因为它可以,那么你在没有返回语句的情况下尝试互换,编译器抱怨。 “卫兵身体不得掉进!”

Swift正在慢慢转向美国,如果我们的条件,我们将使用警卫和早期退出。我得说,苹果非常偷偷摸摸。他们正在帮助我们在不明显的情况下编写更好的代码。

“别的{}”在多年的岁月中为我们服务了,但随着人类的发展,问题已经变得更加复杂,我们的项目如此庞大的是,我们必须找到更具适当的工具来解决它们。

逆转我们如何考虑IF - else逻辑将有助于我们摆脱别人{}并告诉我们,在大多数情况下我们毕竟需要它。

我已经指出,似乎我完全突出了“别的{}”并且不要使用'early {}'是一个严厉的头衔。它可能是,但我不是,至少不适合每个条件。

是的,所提供的示例可能被认为太简单,但它触发了对比差异,这就是我需要沿着论点传递的所有差异。

条件是编程语言的核心,“如果 - else”显然在其中心。对于在匹配更多条件的同时,它与“如果是的其他{}”一样,那就像“如果是的{}”一样。有时你需要它们;这完全正确。我所说的只是,当它促进一些伟大的编码模式时,我们应该尝试优先使用“If-Not-Deviate”的使用“If-Elly”。

另外一件事,我们中的一些人不喜欢早期退出,(我可以为它献上一篇文章,但现在只是几个想法),因为它可能会促进错误,让你的一次出入口点模式脱开与不可预测的代码。这对于长函数和非常复杂的算法是真的,我的意思是你必须遵循流量右键?但是当你;当可能时,尝试将远离长期函数转向较短的,即单一目的为导向,您会发现自己早期退出,因为它更有意义。