讨论一个业务代码判断的写法问题,这两种写法你们更喜欢那种?

2022-06-17 12:39:04 +08:00
 nuanshen
//写法 1 ,不满足条件跳过业务处理
for(){
  if(!condition){
    continue;
  }
  //businessCode
}

//写法 2,满足条件执行业务处理
for(){
  if(condition){
    //businessCode
  }
}
4834 次点击
所在节点    Java
55 条回复
RedBeanIce
2022-06-17 12:40:34 +08:00
分场景。绝大部分提前返回。1
May725
2022-06-17 12:42:30 +08:00
更倾向于提前返回,避免嵌套
TWorldIsNButThis
2022-06-17 12:54:01 +08:00
一般不用 for
使用语义化的迭代工具
map filter
yazinnnn
2022-06-17 12:57:06 +08:00
collection.filter { } //过滤满足条件
.map { } //执行业务,返回业务结果
.reduce { } //聚合业务结果
yolee599
2022-06-17 13:01:27 +08:00
提前 return ,可以提高运行效率,代码也美观
chendy
2022-06-17 13:09:47 +08:00
看内容多长……
如果不长的话就套在写法 1 里
如果比较长就写成写法 2 提前退出

但是还有一种情况是好几个 contine / break 的( sonar 会警告
这种情况一般就抽个方法,在方法里 return
newaccount
2022-06-17 13:10:01 +08:00
看情况。business 部分行数不多用 2 ,多了用 1 。但用 1 的时候可能会声明变量以去掉 not 判断,因为快速浏览时感叹号不明显导致漏看。如果感叹号左右增加空格提高可读性又得配置 checkstyle ,麻烦
dcsuibian
2022-06-17 13:10:57 +08:00
喜欢第 1 种,少一层嵌套。
AlekoShen
2022-06-17 13:34:45 +08:00
一般 1 不过如果判断条件复杂会用 3,4 楼的写法
VeryZero
2022-06-17 13:36:40 +08:00
大多数情况肯定第一种好啊,可以显著降低阅读时的心智负担
DrakeXiang
2022-06-17 13:37:52 +08:00
我一般都是 2 ,除非业务逻辑比较长,然后只有一个 condition 的情况下可能会选择 1
Detector
2022-06-17 13:37:58 +08:00
第一种,不管是写起来是读起来,对我而言都舒服太多
ericls
2022-06-17 13:41:32 +08:00
@yazinnnn 有些语言这样写会产生实际的性能问题 虽然看起来比较舒服

我个人喜欢第一种 但是你要写成别的 我也没意见
MakHoCheung
2022-06-17 14:14:57 +08:00
第一种是一个模式,忘了叫啥,Swift 的 guard 语句就是这样
xuelu520
2022-06-17 14:17:56 +08:00
写法一吧,
第二种如果业务代码很多,很容易造成多重嵌套。
buried
2022-06-17 14:23:12 +08:00
写法一,避免太多的缩进
hidemyself
2022-06-17 14:23:45 +08:00
第一种,卫语句
SteveWoo
2022-06-17 14:24:37 +08:00
看这个模块重不重要。 如果出错了风险大不大。 一般情况第一种。
重要场景,个人一定会 if 和 else 成对出现来实现,宁愿有一堆 if else 嵌套
for(){
if {
if {
} else{
}
} else {
if {
} else{
// 根据算法多次与产品确认,这个场景就是啥也不做
}
}
}
fkname
2022-06-17 14:29:56 +08:00
排除其他条件更喜欢第二种,因为第一种加了一个非,有时候变量命名又是什么 notSuccess 之类的,再加个非脑子里就要多想一下,如果疏忽了就可能导致判断错误。
exmario
2022-06-17 14:40:22 +08:00
一般选 2 ,业务流程更清晰

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

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

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

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

© 2021 V2EX