提前返回有好处吗?


全文共1634字,预计学习时长5分钟

来源:Pexels

使用提前返回(early returns)还是不使用提前返回,这是个问题,两者都有其缘由。

 

关于使用提前返回,程序员往往有很强的个人偏好。有些人从不使用,另一些人却对此执念很深。但除了个人编程风格外,还有别的其他原因吗?

 

本文中,小芯将和大家一起讨论可以在代码中使用提前返回的原因,以及为什么一些程序员不选择使用提前返回。

 

在开始深入探讨提前返回这个话题之前,我们首先要了解一下“提前返回到底是什么?

 

 

提前返回是指编写的函数能在结尾处返回预期结果。

 

在函数中,其余代码应尽快触发终端,防止偏离函数目的。

 

提前返回的运行正如其名所述。下面就是提前返回的运行模式:

 

functionsomeFunction(someCondition) {    if (!someCondition) {        return;    }   // Do something}

但和往常一样,在编程中,一个问题总有多种解决方法。这两种解决方案都很好,没有优劣之分。

 

提前返回的另一种替代方法可能是这样的:

 

function someFunction(someCondition){    if (someCondition) {        // Do something    }}

那么,为什么要考虑使用提前返回?

 

考虑使用提前返回的原因之一,就是能让代码的视觉效果更加流畅。如果选择其他替代方法,使用if语句,就需要额外缩进,而使用提前返回则并不需要,代码的可读性也更强。

 

使用提前返回的另一个原因,是它可以让diffs命令更加简洁,尤其是所做更改会改变缩进的话,更是如此。如果不采用提前返回方法,即使可能只有几行代码,diff命令也会非常繁琐。

 

最后一个原因,提前返回是程序员的定心丸。通过使用提前返回,可以先排除无效情况(保镖模式),再空出一行,便可专注于函数的“真正”主体。

 

此外,如果不使用提前返回,那就只有一个出口点,意味着人们必须一直在脑海中搜索全部代码,直到函数运行结束。

 

那么,为什么不使用呢?

 

另一方面,关于为什么不该使用提前返回,也有一些原因。笔者在StackOverflow网站上读到过一篇很好的评论文章,几乎涵盖了大部分反对使用提前返回的原因:

 

“一般来说,人们希望函数中能有尽可能少的返回点。实际原因是为了简化代码读取,因为可以始终假设每个函数都能够接收参数,执行逻辑,并返回结果。

 

而增加返回次数往往会使逻辑复杂化,增加读取和充分理解代码所需的时间。

 

一旦代码达到了维护阶段,新手程序员试图推理逻辑时,多次返回就会大大影响他们的效率(当注释比较分散,代码模糊不清时尤其糟糕)。

 

函数的长度越长,问题也就越严重。

 

该评论来自于马克·凯格尔。尽管发布于十多年前,但笔者认为,如果决定不使用提前返回,该评论仍有意义。

 

在某些情况下,使用提前返回就比较夸张。来看看下面的例子:

 

function setAge(age) {    if (!age) {        return;    }       this.age = age;}

此处使用提前返回似乎不太对,对代码来说可能弊大于利,因为本可以更简洁:

 

function setAge(age) {    if (age) {        this.age = age;    }}

 

来源:Pexels

 

提前返回,你选择用还是不用?你是那种喜欢使用提前返回的程序员吗,因为这样代码可以平稳运行?还是在函数里最多只返回一次结果?

 

现在,轮到你了!快分享一下你对提前返回的看法吧~


推荐阅读专题

留言 点赞 发个朋友圈

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

编译组:刘露敏、余书敏

相关链接:

https://medium.com/better-programming/are-early-returns-any-good-eed4b4d03866

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

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017 论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

发布了768 篇原创文章 · 获赞 2447 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/duxinshuxiaobian/article/details/104218391