//写法 1 ,不满足条件跳过业务处理
for(){
if(!condition){
continue;
}
//businessCode
}
//写法 2,满足条件执行业务处理
for(){
if(condition){
//businessCode
}
}
//写法 1 ,不满足条件跳过业务处理
for(){
if(!condition){
continue;
}
//businessCode
}
//写法 2,满足条件执行业务处理
for(){
if(condition){
//businessCode
}
}
|
RedBeanIceJun 17, 2022 via iPhone
1
分场景。绝大部分提前返回。1
|
|
May725Jun 17, 2022
2
更倾向于提前返回,避免嵌套
|
|
TWorldIsNButThisJun 17, 2022 via iPhone
3
一般不用 for
使用语义化的迭代工具 map filter |
|
4
collection.filter { } //过滤满足条件
.map { } //执行业务,返回业务结果 .reduce { } //聚合业务结果 |
|
yolee599Jun 17, 2022 via Android
5
提前 return ,可以提高运行效率,代码也美观
|
|
chendyJun 17, 2022
6
看内容多长……
如果不长的话就套在写法 1 里 如果比较长就写成写法 2 提前退出 但是还有一种情况是好几个 contine / break 的( sonar 会警告 这种情况一般就抽个方法,在方法里 return |
|
newaccountJun 17, 2022
7
看情况。business 部分行数不多用 2 ,多了用 1 。但用 1 的时候可能会声明变量以去掉 not 判断,因为快速浏览时感叹号不明显导致漏看。如果感叹号左右增加空格提高可读性又得配置 checkstyle ,麻烦
|
|
dcsuibianJun 17, 2022
8
喜欢第 1 种,少一层嵌套。
|
|
AlekoShenJun 17, 2022
9
一般 1 不过如果判断条件复杂会用 3,4 楼的写法
|
|
VeryZeroJun 17, 2022
10
大多数情况肯定第一种好啊,可以显著降低阅读时的心智负担
|
|
DrakeXiangJun 17, 2022
11
我一般都是 2 ,除非业务逻辑比较长,然后只有一个 condition 的情况下可能会选择 1
|
|
DetectorJun 17, 2022
12
第一种,不管是写起来是读起来,对我而言都舒服太多
|
|
MakHoCheungJun 17, 2022
14
第一种是一个模式,忘了叫啥,Swift 的 guard 语句就是这样
|
|
xuelu520Jun 17, 2022
15
写法一吧,
第二种如果业务代码很多,很容易造成多重嵌套。 |
|
buriedJun 17, 2022
16
写法一,避免太多的缩进
|
|
hidemyselfJun 17, 2022
17
第一种,卫语句
|
|
SteveWooJun 17, 2022
18
看这个模块重不重要。 如果出错了风险大不大。 一般情况第一种。
重要场景,个人一定会 if 和 else 成对出现来实现,宁愿有一堆 if else 嵌套 for(){ if { if { } else{ } } else { if { } else{ // 根据算法多次与产品确认,这个场景就是啥也不做 } } } |
|
fknameJun 17, 2022
19
排除其他条件更喜欢第二种,因为第一种加了一个非,有时候变量命名又是什么 notSuccess 之类的,再加个非脑子里就要多想一下,如果疏忽了就可能导致判断错误。
|
|
exmarioJun 17, 2022
20
一般选 2 ,业务流程更清晰
|
|
aababcJun 17, 2022
21
我感觉我是分情况,在循环里不太喜欢使用 break ,continue, 在非循环的场景下,喜欢提前返回!
|
|
yfugibrJun 17, 2022
22
看情况,一般会选用嵌套层数少的,逻辑看着清晰一点
|
|
yaodong0126Jun 17, 2022
23
说第一种的,一定没看过 lint 标准,我就贴个地址,自行斟酌: https://eslint.org/docs/rules/no-continue
|
|
zakokunJun 17, 2022
24
一般都提前返回 防止嵌套太多层
|
|
fpureJun 17, 2022
25
@MakHoCheung Avoid Else, Return Early?
|
|
AmericanExpressJun 17, 2022 via iPhone
26
我反正从来不用 continue…
|
|
jorneyrJun 17, 2022
27
喜欢第一种守卫式写法,并且后面的代码也不用多一层缩进。
|
|
potatowishJun 17, 2022 via iPhone
28
判断条件很多,就用第一种,判断条件少用第二种
|
|
28Sv0ngQfIE7YloeJun 17, 2022
29
目前我的代码尽量都是一次缩进,二次缩进就有阅读成本了
|
|
dexterqueJun 17, 2022
30
一般推荐 1 吧
|
|
cnoderJun 17, 2022
31
有没有可能 他某个语言,没有 continue 0.0
|
|
daimubaiJun 17, 2022
32
第 1 种,可读性高。可以解放思维,continue 的就不用再管了
|
|
XusuallyJun 17, 2022
34
在循环里,没有特殊情况的话,我一般用 2.
但是在循环外,可以直接 return 的时候经常用 1. |
|
littlewingJun 17, 2022
35
1
|
|
unregisterJun 17, 2022 via Android
36
用 continue 感觉有点多余
|
|
libookJun 17, 2022
37
如果代码很长,提前返回可能不利于可读性;甚至建议除非有必要不写 else ,有 if 必有 else ,这样能规避一些逻辑盲区的 bug ,让任何情况都有所处理。
当然代码风格没有完全之策,最好是在每个项目的迭代过程中进行归纳整理,然后沉淀为 lint 规则。 |
|
guanhui07Jun 17, 2022
38
1 喜欢卫语句,减少嵌套 好看,方便维护,心智负担少点
|
|
buxudashiJun 17, 2022
39
再加个
if(!!condition){} |
|
SuddooJun 17, 2022 via iPhone
40
我一般用第一种
|
|
jiangzhizhouJun 17, 2022
41
这两种都可以,但是 for 一般必须被 Stream 替换。
|
|
stillsillyJun 17, 2022
42
我写代码 18 年了,从没用过 continue
|
|
unco020511Jun 17, 2022
43
我喜欢 1
|
|
kinghlyJun 18, 2022 via Android
44
减少嵌套
|
|
45
个人习惯是循环内用真判断, 满足条件时执行.
函数内使用假判断, 参数不符合要求提前返回. e.g: DoSomethings (things) { if (things is null) throw if (things is empty) return for (thing in things) { if (thing is not nothing) { //do thing } } } |
|
lujiaosamaJun 18, 2022
46
循环外第一种提前返回, 循环内第二种我不喜欢用 continue
|
|
icylogicJun 18, 2022
47
第一种视觉上嵌套少,但 npath 复杂度仍然是升高的,函数最终还是要控制 npath (或者类似的标准)以适配人脑 cache 大小
|
|
a68UkLHpycW7ImyVJun 18, 2022 via Android
48
大部分情况下都是第 1 种
|
|
wu67Jun 18, 2022
49
建议看看《重构》, 有对这个场景的说明.
按我个人理解, 是分支少就直接 if else. if else 过多, 需要打断嵌套地狱, 就使用‘错误先行’, 即提前返回, 后续的代码就能少一层{} |
|
cheng6563Jun 18, 2022
50
哪种{}小用哪种
|
|
evan1024Jun 18, 2022 via Android
51
一般保持团队一致即可,推荐引入代码风格检查工具
|
|
irisdevJun 18, 2022
52
2 吧,不喜欢用 continue
|
|
changzJun 19, 2022
53
卫语句
|
|
alen0206Jun 24, 2022
54
1
|
|
siweipanccJul 14, 2022 via iPhone
55
第二种容易写成无限套娃,看得人头大。
我写的业务代码缩进超过两次就当场重构了。 我的猜想是喜欢第二种的大部分原因来源产品模糊的需求,那怎么避免呢? if 判断精确判断到产品的原话不就得了,好处是出问题直接甩锅,至于代码维护的相信后人智慧 |