![]() | 1 HongJay 2017-09-08 17:06:12 +08:00 return 的 do something 不知行了吧 |
2 lowzoom 2017-09-08 17:06:13 +08:00 必须下面的好 |
![]() | 3 EPr2hh6LADQWqRVH 2017-09-08 17:08:22 +08:00 if error then throw up |
![]() | 4 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; } ----------------------------------------- 好吧,答题主,第二种好 |
![]() | 5 xiaoc19 2017-09-08 17:16:37 +08:00 via iPhone 第二种,swift 可以使用 guard else 的方式 |
![]() | 6 orderc 2017-09-08 17:19:17 +08:00 第二种, 错误提前返回 |
7 zhenjiachen 2017-09-08 17:21:29 +08:00 我写 golang 好多地方都是第二种。 |
![]() | 8 Vindroid 2017-09-08 17:27:56 +08:00 第二种,第一种 if 里一大段,看着别扭 |
![]() | 9 flyingghost 2017-09-08 17:46:07 +08:00 ![]() 第二种。 函数头部先把参数异常、外部环境异常、内部状态异常等所有非法异常统统处理完。 接下来安安静静的专心处理函数本身的主体逻辑。 虽然看起来有点丑,但实用,清晰。 |
![]() | 10 owenliang 2017-09-08 17:47:47 +08:00 我就想问,重要吗。。 |
11 Cbdy 2017-09-08 17:50:22 +08:00 go 语言已经给你答案了:先写能提前返回的 |
![]() | 12 willvvvv 2017-09-08 17:50:40 +08:00 第二种优先,称之为卫语句 当出现嵌套判定时,方便梳理逻辑。 |
13 jlsk 2017-09-08 18:01:32 +08:00 我一直觉得第一种好,因为这样可以少打几个字符 |
14 ceflib 2017-09-08 18:01:37 +08:00 《重构 改善既有代码的设计》有讲 |
![]() | 15 AlisaDestiny 2017-09-08 18:09:58 +08:00 第二种,嵌套可以少一层。 |
![]() | 16 xiahei 2017-09-08 18:21:32 +08:00 第二种,early return,一切为了可读性。 |
17 keenwon 2017-09-08 18:27:05 +08:00 明显第二种 |
![]() | 18 flowfire 2017-09-08 18:29:22 +08:00 via Android 明显卫语句减少嵌套比较好吧 而且一般卫语句 if 后面推荐不带括号 |
![]() | 19 momocraft 2017-09-08 18:30:43 +08:00 第一个在你写了很多条件后会变成,不 scalable。 第二个就一直是■,只是长一些。 |
![]() | 20 lzjV2EX 2017-09-08 18:31:21 +08:00 第二种好 |
21 simon7 2017-09-08 18:39:40 +08:00 via iPad 第二种好 第一种会变成 if 嵌套的 |
![]() | 22 kn007 2017-09-08 18:41:09 +08:00 必须第二种 |
![]() | 23 kn007 2017-09-08 18:41:34 +08:00 任何语言,都建议函数先写能返回的。 |
![]() | 24 ChiangDi 2017-09-08 18:44:10 +08:00 via iPhone 学习了 |
![]() | 25 autoxbc 2017-09-08 18:51:28 +08:00 就这个例子来说,第一种显然更好 既不用否命题判断(反直觉),也不用多写一个返回操作(嗦) |
![]() | 26 iugo 2017-09-08 18:55:42 +08:00 我觉得要看 do something 和其他代码的对比. 如果 do something 是本函数的核心, 那就第二种. 可如果不是呢. 如果 something 只是所有事情中的一部分, 那就另说了. |
![]() | 27 happywowwow 2017-09-08 19:01:28 +08:00 https://coolshell.cn/articles/17757.html <如何重构“箭头型”代码> |
![]() | 28 iyangyuan 2017-09-08 19:32:28 +08:00 via iPhone 异常则中断,规避嵌套,提高可读性,方便扩展 |
29 danielmiao 2017-09-08 19:55:03 +08:00 第二种,但是不返回,抛异常,或者用 block 语句包围。 直接返回容易造成调试困难,根本不知道程序从哪个位置退出 |
30 ypcs03 nbsp; 2017-09-09 00:00:59 +08:00 via Android 必须下面的好,你可以省一个 else |
![]() | 32 misaka20038numbe 2017-09-09 02:12:52 +08:00 一般是第二种,不过还是要看实际情况。 |
![]() | 33 mornlight 2017-09-09 02:16:48 +08:00 提早、多用 return,边界清楚。否则以后看代码的时候一堆 else 很容易晕掉。 |
34 kaifeii 2017-09-09 02:58:18 +08:00 第一种和第二种编译结果应该是一样的,对执行没有影响。 这个选择只是对可读性的择优。 |
![]() | 35 AvenirX 2017-09-09 10:11:36 +08:00 via iPhone |
![]() | 36 RorschachZZZ 2017-09-09 11:42:19 +08:00 第二种。 |
37 honeycomb 2017-09-09 19:28:52 +08:00 via Android @flyingghost 前面先把各种可以或需要排除的问题 guard |
38 zhx1991 2017-09-09 19:38:56 +08:00 第二种好 金字塔式的 if 嵌套让人看的绝望 |
![]() | 39 RLib 2017-09-10 09:57:35 +08:00 那要看你 if 体有多大, 如果就一两句, 无所谓 |
![]() | 40 liuminghao233 2017-09-10 16:58:57 +08:00 肯定第二种 |
![]() | 41 Sapp 2017-09-10 18:40:54 +08:00 我是喜欢下面的,包括不用 else。 |
42 introom 2017-09-10 19:48:02 +08:00 via Android 如果第二种实际上后面执行的很短,我坚决第一种。否则第二种。 |