一种错误的 if 写法

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

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

一种错误的 if 写法

本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 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个月前
Blsa 2周前
GcHoung

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

1个月前 评论

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

1个月前 评论

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

1个月前 评论
小李世界 1个月前

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

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

4周前 评论
junwind (楼主) 4周前
gema

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

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

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