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

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

//写法 2,满足条件执行业务处理
for(){
  if(condition){
    //businessCode
  }
}
4857 次点击
所在节点    Java
55 条回复
aababc
2022-06-17 14:46:47 +08:00
我感觉我是分情况,在循环里不太喜欢使用 break ,continue, 在非循环的场景下,喜欢提前返回!
yfugibr
2022-06-17 14:55:45 +08:00
看情况,一般会选用嵌套层数少的,逻辑看着清晰一点
yaodong0126
2022-06-17 15:00:26 +08:00
说第一种的,一定没看过 lint 标准,我就贴个地址,自行斟酌: https://eslint.org/docs/rules/no-continue
zakokun
2022-06-17 15:02:42 +08:00
一般都提前返回 防止嵌套太多层
fpure
2022-06-17 15:05:08 +08:00
@MakHoCheung Avoid Else, Return Early?
SeaTac
2022-06-17 15:08:00 +08:00
我反正从来不用 continue…
jorneyr
2022-06-17 15:16:07 +08:00
喜欢第一种守卫式写法,并且后面的代码也不用多一层缩进。
potatowish
2022-06-17 15:19:51 +08:00
判断条件很多,就用第一种,判断条件少用第二种
Morii
2022-06-17 16:41:16 +08:00
目前我的代码尽量都是一次缩进,二次缩进就有阅读成本了
dexterque
2022-06-17 16:59:11 +08:00
一般推荐 1 吧
cnoder
2022-06-17 16:59:36 +08:00
有没有可能 他某个语言,没有 continue 0.0
daimubai
2022-06-17 17:04:01 +08:00
第 1 种,可读性高。可以解放思维,continue 的就不用再管了
Rache1
2022-06-17 17:04:24 +08:00
@cnoder TWIG 😂,虽然不算语言,是一个模板引擎,实现了自己的流程控制语句,但是就是没有 continue 和 break
Xusually
2022-06-17 17:04:34 +08:00
在循环里,没有特殊情况的话,我一般用 2.

但是在循环外,可以直接 return 的时候经常用 1.
littlewing
2022-06-17 17:06:57 +08:00
1
unregister
2022-06-17 17:19:07 +08:00
用 continue 感觉有点多余
libook
2022-06-17 17:25:14 +08:00
如果代码很长,提前返回可能不利于可读性;甚至建议除非有必要不写 else ,有 if 必有 else ,这样能规避一些逻辑盲区的 bug ,让任何情况都有所处理。

当然代码风格没有完全之策,最好是在每个项目的迭代过程中进行归纳整理,然后沉淀为 lint 规则。
guanhui07
2022-06-17 17:47:48 +08:00
1 喜欢卫语句,减少嵌套 好看,方便维护,心智负担少点
buxudashi
2022-06-17 17:51:29 +08:00
再加个
if(!!condition){}
Suddoo
2022-06-17 17:53:11 +08:00
我一般用第一种

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

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

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

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

© 2021 V2EX