一种错误的 if 写法

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

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

一种错误的 if 写法

本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 32

就问能不能跑起来

1年前 评论
Junwind (楼主) 1年前

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

1年前 评论
xiaotuantuan (作者) 1年前
Junwind (楼主) 1年前
Junwind (楼主) 1年前
kolin 1年前
哪吒的狗腿子 1年前

goto 是啥

1年前 评论
helloStar 1年前
Junwind (楼主) 1年前
largezhou 1年前
Silly-dog 1年前
helloStar 1年前
helloStar 1年前

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

1年前 评论
我爱大可乐 1年前
Junwind (楼主) 1年前
sanders

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

1年前 评论

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

1年前 评论
Junwind (楼主) 1年前
LXK 1年前
代码笔记 1年前
GcHoung

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

1年前 评论

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

1年前 评论

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

1年前 评论
小李世界 1年前

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

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

1年前 评论
Junwind (楼主) 1年前
porygonCN

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

1年前 评论
Junwind (楼主) 1年前

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