【第1076期】 如何无痛降低 if else 面条代码复杂度

本文探讨了如何重构常见的if...else和else if...else if型面条代码,提出通过拆分函数、查找表和职责链模式来降低代码复杂度。文章强调了理解业务逻辑和合理利用编程语言特性的重要性,提倡编写简洁易读的代码。
摘要由CSDN通过智能技术生成

前言

今日早读文章由美团点评 @ewind 授权分享。

正文从这开始~

相信不少同学在维护老项目时,都遇到过在深深的 if else 之间纠缠的业务逻辑。面对这样的一团乱麻,简单粗暴地继续增量修改常常只会让复杂度越来越高,可读性越来越差,有没有固定的套路来梳理它呢?这里分享三种简单通用的重构方式。

什么是面条代码

所谓的【面条代码】,常见于对复杂业务流程的处理中。它一般会满足这么几个特点:

  • 内容长

  • 结构乱

  • 嵌套深

我们知道,主流的编程语言均有函数或方法来组织代码。对于面条代码,不妨认为它就是满足这几个特征的函数吧。根据语言语义的区别,可以将它区分为两种基本类型:

if...if 型

这种类型的代码结构形如:

function demo (a, b, c) {
 if (f(a, b, c)) {
   if (g(a, b, c)) {
     // ...
   }
   // ...
   if (h(a, b, c)) {
     // ...
   }
 }
 if (j(a, b, c)) {
   // ...
 }
 if (k(a, b, c)) {
   // ...
 }
}

流程图形如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值