一种错误的 if 写法

项目中,看了一段代码,脑壳疼。
非常不建议这种 n 层的 if 嵌套写法,不满足的可以提前 return,break,甚至是 goto,减少 if 层级。
下面这种写法,及其难维护。

还有一个难点是,没有一行注释。

一种错误的 if 写法

本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 32

就问能不能跑起来

3周前 评论
junwind (楼主) 3周前

不好维护才是正解,好维护就不需要你了

3周前 评论
xiaotuantuan (作者) 3周前
junwind (楼主) 3周前
junwind (楼主) 3周前
kolin 3周前
哪吒的狗腿子 3周前

goto 是啥

3周前 评论
helloStar 3周前
junwind (楼主) 3周前
largezhou 3周前
Silly-dog 3周前
helloStar 3周前
helloStar 3周前

小巫见大巫了,我这比你大两倍的 if else

3周前 评论
我爱大可乐 3周前
junwind (楼主) 3周前
sanders

锯齿形代码,期待楼主修改后的版本。

3周前 评论

然而我公司并不推荐提前return,会用多层if或者其他方式保证只有一个return出口 :joy:

3周前 评论
junwind (楼主) 3周前
LiuXiaoKang 3周前
Blsa 1周前
GcHoung

我见过比这更离谱的,而且还是python代码

3周前 评论

贴图里的代码foreach里都有多个if,其实可以判反不满足条件的提前continue的。业务实在复杂其实也可以拆分开几块小逻辑的。

3周前 评论

if套的,一看就是老资格程序员了 :joy:

3周前 评论
小李世界 3周前

这算啥,我认识一个,不用递归,直接方法内 while ( 1 ),然后静态搞,拿到自己要的东西后brake

批量操作数据不用批量语句,直接方法内 while ( 1 ),每次根据条件取一条处理,取不到brake

3周前 评论
junwind (楼主) 2周前
gema

如果只是多层if,可以用&&减少就用&& 如果是每层if都带着else,那这样也没有什么不可以。难以维护的根本原因是代码混乱+没有合适的注释标注,GTA5还有20亿次if呢 :joy:

2周前 评论
junwind (楼主) 2周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!