函数中 if 是直接返回好,还是包起来好? 不知如何描述,进来看看吧。

2017-09-08 17:01:14 +08:00
 hao1032
以下 2 种方式,哪种更好呢?

4589 次点击
所在节点    程序员
42 条回复
HongJay
2017-09-08 17:06:12 +08:00
return 的 do something 不知行了吧
lowzoom
2017-09-08 17:06:13 +08:00
必须下面的好
EPr2hh6LADQWqRVH
2017-09-08 17:08:22 +08:00
if error then throw up
yulitian888
2017-09-08 17:16:36 +08:00
这个问题最大的问题,难道不是“不知如何描述”吗?

没点进来之前,看标题还以为是这样的情况:

var result ;
if(condition)
{
resdult =xxx;
}
else
{
result = yyy;
}
return result;

-------------------------------

if(condition)
{
return xxx;
}
else
{
return yyy;
}

-----------------------------------------
好吧,答题主,第二种好
xiaoc19
2017-09-08 17:16:37 +08:00
第二种,swift 可以使用 guard else 的方式
orderc
2017-09-08 17:19:17 +08:00
第二种, 错误提前返回
zhenjiachen
2017-09-08 17:21:29 +08:00
我写 golang 好多地方都是第二种。
Vindroid
2017-09-08 17:27:56 +08:00
第二种,第一种 if 里一大段,看着别扭
flyingghost
2017-09-08 17:46:07 +08:00
第二种。
函数头部先把参数异常、外部环境异常、内部状态异常等所有非法异常统统处理完。
接下来安安静静的专心处理函数本身的主体逻辑。

虽然看起来有点丑,但实用,清晰。
owenliang
2017-09-08 17:47:47 +08:00
我就想问,重要吗。。
Cbdy
2017-09-08 17:50:22 +08:00
go 语言已经给你答案了:先写能提前返回的
willvvvv
2017-09-08 17:50:40 +08:00
第二种优先,称之为卫语句

当出现嵌套判定时,方便梳理逻辑。
jlsk
2017-09-08 18:01:32 +08:00
我一直觉得第一种好,因为这样可以少打几个字符
ceflib
2017-09-08 18:01:37 +08:00
《重构 改善既有代码的设计》有讲
AlisaDestiny
2017-09-08 18:09:58 +08:00
第二种,嵌套可以少一层。
xiahei
2017-09-08 18:21:32 +08:00
第二种,early return,一切为了可读性。
keenwon
2017-09-08 18:27:05 +08:00
明显第二种
flowfire
2017-09-08 18:29:22 +08:00
明显卫语句减少嵌套比较好吧
而且一般卫语句 if 后面推荐不带括号
momocraft
2017-09-08 18:30:43 +08:00
第一个在你写了很多条件后会变成▶,不 scalable。

第二个就一直是■,只是长一些。
lzjV2EX
2017-09-08 18:31:21 +08:00
第二种好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/389246

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX