讨论一个业务代码判断的写法问题,这两种写法你们更喜欢那种?
source link: https://www.v2ex.com/t/860261
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
//写法 1 ,不满足条件跳过业务处理
for(){
if(!condition){
continue;
}
//businessCode
}
//写法 2,满足条件执行业务处理
for(){
if(condition){
//businessCode
}
}
RedBeanIce 4 小时 48 分钟前 via iPhone 分场景。绝大部分提前返回。1
|
May725 4 小时 46 分钟前 更倾向于提前返回,避免嵌套
|
TWorldIsNButThis 4 小时 34 分钟前 via iPhone 一般不用 for
使用语义化的迭代工具 map filter |
yazinnnn 4 小时 31 分钟前 3 collection.filter { } //过滤满足条件
.map { } //执行业务,返回业务结果 .reduce { } //聚合业务结果 |
yolee599 4 小时 27 分钟前 via Android 提前 return ,可以提高运行效率,代码也美观
|
chendy 4 小时 18 分钟前 看内容多长……
如果不长的话就套在写法 1 里 如果比较长就写成写法 2 提前退出 但是还有一种情况是好几个 contine / break 的( sonar 会警告 这种情况一般就抽个方法,在方法里 return |
newaccount 4 小时 18 分钟前 看情况。business 部分行数不多用 2 ,多了用 1 。但用 1 的时候可能会声明变量以去掉 not 判断,因为快速浏览时感叹号不明显导致漏看。如果感叹号左右增加空格提高可读性又得配置 checkstyle ,麻烦
|
dcsuibian 4 小时 17 分钟前 喜欢第 1 种,少一层嵌套。
|
AlekoShen 3 小时 53 分钟前 一般 1 不过如果判断条件复杂会用 3,4 楼的写法
|
VeryZero 3 小时 51 分钟前 大多数情况肯定第一种好啊,可以显著降低阅读时的心智负担
|
DrakeXiang 3 小时 50 分钟前 我一般都是 2 ,除非业务逻辑比较长,然后只有一个 condition 的情况下可能会选择 1
|
Detector 3 小时 50 分钟前 第一种,不管是写起来是读起来,对我而言都舒服太多
|
MakHoCheung 3 小时 13 分钟前 第一种是一个模式,忘了叫啥,Swift 的 guard 语句就是这样
|
xuelu520 3 小时 10 分钟前 写法一吧,
第二种如果业务代码很多,很容易造成多重嵌套。 |
buried 3 小时 5 分钟前 写法一,避免太多的缩进
|
hidemyself 3 小时 4 分钟前 第一种,卫语句
|
SteveWoo 3 小时 3 分钟前 看这个模块重不重要。 如果出错了风险大不大。 一般情况第一种。
重要场景,个人一定会 if 和 else 成对出现来实现,宁愿有一堆 if else 嵌套 for(){ if { if { } else{ } } else { if { } else{ // 根据算法多次与产品确认,这个场景就是啥也不做 } } } |
fkname 2 小时 58 分钟前 排除其他条件更喜欢第二种,因为第一种加了一个非,有时候变量命名又是什么 notSuccess 之类的,再加个非脑子里就要多想一下,如果疏忽了就可能导致判断错误。
|
exmario 2 小时 48 分钟前 一般选 2 ,业务流程更清晰
|
aababc 2 小时 41 分钟前 我感觉我是分情况,在循环里不太喜欢使用 break ,continue, 在非循环的场景下,喜欢提前返回!
|
yfugibr 2 小时 32 分钟前 看情况,一般会选用嵌套层数少的,逻辑看着清晰一点
|
zakokun 2 小时 25 分钟前 一般都提前返回 防止嵌套太多层
|
fpure 2 小时 23 分钟前 @MakHoCheung Avoid Else, Return Early?
|
seaiaddca 2 小时 20 分钟前 via iPhone 我反正从来不用 continue…
|
jorneyr 2 小时 12 分钟前 喜欢第一种守卫式写法,并且后面的代码也不用多一层缩进。
|
potatowish 2 小时 8 分钟前 via iPhone 判断条件很多,就用第一种,判断条件少用第二种
|
Morii 47 分钟前 目前我的代码尽量都是一次缩进,二次缩进就有阅读成本了
|
dexterque 29 分钟前 一般推荐 1 吧
|
cnoder 28 分钟前 有没有可能 他某个语言,没有 continue 0.0
|
daimubai 24 分钟前 第 1 种,可读性高。可以解放思维,continue 的就不用再管了
|
Xusually 24 分钟前 在循环里,没有特殊情况的话,我一般用 2.
但是在循环外,可以直接 return 的时候经常用 1. |
littlewing 21 分钟前 |
unregister 9 分钟前 via Android 用 continue 感觉有点多余
|
libook 3 分钟前 如果代码很长,提前返回可能不利于可读性;甚至建议除非有必要不写 else ,有 if 必有 else ,这样能规避一些逻辑盲区的 bug ,让任何情况都有所处理。
当然代码风格没有完全之策,最好是在每个项目的迭代过程中进行归纳整理,然后沉淀为 lint 规则。 |
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK