第一种
if(xxx){
return xxxx;
}else{
return xxxx;
}
第二种
xxx response;
if(xxx){
response = xxxx;
}
else{
response = xxxx;
}
return response
1
TWorldIsNButThis 2022-07-15 18:56:51 +08:00 via iPhone
我现在更喜欢三目或者 1
有对称的美感 |
2
zhlxsh 2022-07-15 18:57:26 +08:00 via iPhone
我觉得没啥区别呀,习惯上的话第一种,少起一个变量名。
|
3
tulongtou 2022-07-15 18:59:10 +08:00
第二种
|
4
v23x 2022-07-15 19:00:00 +08:00
混着用
看情况把 |
5
dem0ns 2022-07-15 19:00:07 +08:00
保险起见 if 里外都用 return
|
6
secsilm 2022-07-15 19:04:27 +08:00 via Android
按照早返回的话第一种,但是如果逻辑真的这么简单的话就看心情吧。逻辑复杂就最好第一种,对读代码的人有帮助。
|
7
netnr 2022-07-15 19:08:04 +08:00 via Android 3
var res = 0;
if(xxx){ res = 1; } return res; |
8
golangLover 2022-07-15 19:08:46 +08:00 via Android 1
没有 else
|
9
jtacm 2022-07-15 19:13:56 +08:00 2
第二种。
原因:你的代码不只是你在维护,其他人也会来维护。为了避免后人在中途各种 return ,制造各种 surprise ,破坏代码可读性,建议用第二种,建立规范,最后返回。 |
10
aptupdate 2022-07-15 19:23:32 +08:00 via iPhone
一般简单的用第一种,如果有稍微复杂的逻辑会用第二种。
|
11
IvanLi127 2022-07-15 19:25:01 +08:00 via Android
if(xxx){
return xxxx; } return xxxx; } |
12
IvanLi127 2022-07-15 19:26:29 +08:00 via Android
if(xxx){
return xxxx; } return xxxx; 我一般这种。 手机操作,前面不小心点到回复按钮发出去了。 |
13
csh1617487191 2022-07-15 19:35:03 +08:00
if(xxx) return xxxx;
return xxxx; |
14
mxT52CRuqR6o5 2022-07-15 19:38:17 +08:00 via Android
第一种,减少副作用逻辑降低心智负担
|
15
Building 2022-07-15 19:40:30 +08:00 via iPhone
二元的话比较喜欢 return a ? { return b }() : { return c }()
说的就是 go 这种二元表达式都不提供的语言 |
16
wccc 2022-07-15 21:20:32 +08:00 via iPhone
第一种
|
17
dqzcwxb 2022-07-15 21:25:23 +08:00
简单的第一种,复杂或者需要扩展维护的第二种
|
18
tcp 2022-07-15 23:02:00 +08:00 via Android
复杂情况下,如果第 2 种 if else 之后还有运算,可能会出错,第 1 种及时 return ,避免后续潜伏 bug 。多个选择分支情况下尤其可能出问题。
|
19
myxingkong 2022-07-15 23:08:31 +08:00
能用三目的话用三目,不能的话看函数复杂度,不复杂 1 ,复杂 2 。
|
20
Jooooooooo 2022-07-15 23:24:54 +08:00
第一种的尴尬之处是, return 的地方是死的, 一旦后续想改动很麻烦.
经验告诉我第二种更好. |
21
Cabana 2022-07-16 00:04:46 +08:00
喜欢这样🐶 return if(xxx) xxx else xxx
|
22
PMR 2022-07-16 00:21:37 +08:00 via Android
if(xxx){
aaa() }else{ bbb() } aaa() { return xxx; } bbb() { return xxx; } :doge: |
23
SirCarol 2022-07-16 08:08:50 +08:00 via iPhone
|
24
andyJado 2022-07-16 09:38:21 +08:00
现在 cpu 都有分支预测, 第一种预测失败导致的回滚应该会更严重一些.
所以, 能用 guard 用 guard, 能 pattern match 就 match, 不写 if eles 之后代码读起来舒服多了.. https://gitpress.io/u/1799/hardware_zh |
25
FYFX 2022-07-16 11:56:30 +08:00
我一般优先第一种,不过在有 return 的情况下没必要写 else
|
26
icyalala 2022-07-16 13:24:57 +08:00 1
|
27
chenyu8674 2022-07-16 14:05:24 +08:00
return x ? y : z;
[doge] |
28
wxw752 2022-07-16 14:05:29 +08:00
想起来哪种用哪种
|
29
gongquanlin 2022-07-16 14:12:22 +08:00
if(xxx){
return xxx; } if(!xxx){ return yyy; } 习惯不用 else ,感觉 else 看起来别扭 最主要的原因还是见识过公司领导的超级无敌大 if...else...里面还嵌套着 n 个 if else ,相同功能代码在 if 和 else 里来回复制,实在是恶心够了,见着 else 就难受。除非特殊情况不会用。。 |
30
lslqtz 2022-07-16 15:50:26 +08:00
res = xxx;
if (a) { res = yyy; } return yes; |
31
ligiggy 2022-07-16 15:57:34 +08:00
第二种叫单出原则,受到很多老程序员的推崇,尤其是 c/c++,但是越来越多的书已经不强求第二种实现了,视具体情况而定。建议 OP 多看点代码优化的书。
多说一句,很多人都不推崇 goto ,或者类似的写法,我也不喜欢, 但是很多编程语言的源码里,有挺多 goto 的,所以,视具体情况而定吧。 |
32
ligiggy 2022-07-16 15:58:58 +08:00
另外,还有很多人喜欢
if() { } 不喜欢 if(){ } 你可以有喜欢的代码方式,但是成熟的开发者,都需要习惯两种写法。 |