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

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

//写法 2,满足条件执行业务处理
for(){
  if(condition){
    //businessCode
  }
}
5139 次点击
所在节点    Java
55 条回复
jiangzhizhou
2022-06-17 18:17:54 +08:00
这两种都可以,但是 for 一般必须被 Stream 替换。
stillsilly
2022-06-17 18:23:38 +08:00
我写代码 18 年了,从没用过 continue
unco020511
2022-06-17 18:48:04 +08:00
我喜欢 1
kinghly
2022-06-18 00:19:49 +08:00
减少嵌套
clorischan
2022-06-18 03:20:11 +08:00
个人习惯是循环内用真判断, 满足条件时执行.
函数内使用假判断, 参数不符合要求提前返回.
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
}
}
}
lujiaosama
2022-06-18 08:42:46 +08:00
循环外第一种提前返回, 循环内第二种我不喜欢用 continue
icylogic
2022-06-18 11:08:39 +08:00
第一种视觉上嵌套少,但 npath 复杂度仍然是升高的,函数最终还是要控制 npath (或者类似的标准)以适配人脑 cache 大小
a68UkLHpycW7ImyV
2022-06-18 12:00:21 +08:00
大部分情况下都是第 1 种
wu67
2022-06-18 14:41:14 +08:00
建议看看《重构》, 有对这个场景的说明.
按我个人理解, 是分支少就直接 if else.
if else 过多, 需要打断嵌套地狱, 就使用‘错误先行’, 即提前返回, 后续的代码就能少一层{}
cheng6563
2022-06-18 15:10:42 +08:00
哪种{}小用哪种
evan1024
2022-06-18 19:23:08 +08:00
一般保持团队一致即可,推荐引入代码风格检查工具
irisdev
2022-06-18 21:10:59 +08:00
2 吧,不喜欢用 continue
changz
2022-06-19 16:55:25 +08:00
卫语句
alen0206
2022-06-24 14:49:48 +08:00
1
siweipancc
2022-07-14 11:59:38 +08:00
第二种容易写成无限套娃,看得人头大。
我写的业务代码缩进超过两次就当场重构了。

我的猜想是喜欢第二种的大部分原因来源产品模糊的需求,那怎么避免呢? if 判断精确判断到产品的原话不就得了,好处是出问题直接甩锅,至于代码维护的相信后人智慧

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

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

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

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

© 2021 V2EX