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

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

4605 次点击
所在节点    程序员
42 条回复
simon7
2017-09-08 18:39:40 +08:00
第二种好 第一种会变成 if 嵌套的
kn007
2017-09-08 18:41:09 +08:00
必须第二种
kn007
2017-09-08 18:41:34 +08:00
任何语言,都建议函数先写能返回的。
ChiangDi
2017-09-08 18:44:10 +08:00
学习了
autoxbc
2017-09-08 18:51:28 +08:00
就这个例子来说,第一种显然更好

既不用否命题判断(反直觉),也不用多写一个返回操作(啰嗦)
iugo
2017-09-08 18:55:42 +08:00
我觉得要看 do something 和其他代码的对比.

如果 do something 是本函数的核心, 那就第二种. 可如果不是呢. 如果 something 只是所有事情中的一部分, 那就另说了.
happywowwow
2017-09-08 19:01:28 +08:00
https://coolshell.cn/articles/17757.html
<如何重构“箭头型”代码>
iyangyuan
2017-09-08 19:32:28 +08:00
异常则中断,规避嵌套,提高可读性,方便扩展
danielmiao
2017-09-08 19:55:03 +08:00
第二种,但是不返回,抛异常,或者用 block 语句包围。
直接返回容易造成调试困难,根本不知道程序从哪个位置退出
ypcs03
2017-09-09 00:00:59 +08:00
必须下面的好,你可以省一个 else
hao1032
2017-09-09 01:41:48 +08:00
@all,学习了,看来不用纠结了,感谢各位。
misaka20038numbe
2017-09-09 02:12:52 +08:00
一般是第二种,不过还是要看实际情况。
mornlight
2017-09-09 02:16:48 +08:00
提早、多用 return,边界清楚。否则以后看代码的时候一堆 else 很容易晕掉。
kaifeii
2017-09-09 02:58:18 +08:00
第一种和第二种编译结果应该是一样的,对执行没有影响。
这个选择只是对可读性的择优。
AvenirX
2017-09-09 10:11:36 +08:00
昨天刚刚看到的文章,里面有例子 你可以看看。

https://mp.weixin.qq.com/s/i5aApAChmqgdxGH4fVu1mA
RorschachZZZ
2017-09-09 11:42:19 +08:00
第二种。
honeycomb
2017-09-09 19:28:52 +08:00
@flyingghost 前面先把各种可以或需要排除的问题 guard
zhx1991
2017-09-09 19:38:56 +08:00
第二种好

金字塔式的 if 嵌套让人看的绝望
RLib
2017-09-10 09:57:35 +08:00
那要看你 if 体有多大, 如果就一两句, 无所谓
liuminghao233
2017-09-10 16:58:57 +08:00
肯定第二种

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

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

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

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

© 2021 V2EX