解耦

作者: _1633_ | 来源:发表于2021-01-20 23:22 被阅读0次

 解耦

            对于大型重构, 最有效的手段就是 解耦, 解耦的目的使实现代码高聚合、松耦合。

        解耦为何如此重要?

         那如何来控制代码的复杂性呢?手段有很多,我个人认为,最关键的就是解耦,保证代码松耦合、高内聚。如果说重构是保证代码质量不至于腐化到无可救药地步的有效手段,那么利用解耦的方法对代码重构,就是保证代码不至于复杂到无法控制的有效手段。

         “高内聚、松耦合”是一个比较通用的设计思想,不仅可以指导细粒度的类和类之间关系的设计,还能指导粗粒度的系统、架构、模块的设计。相对于编码规范,它能够在更高层次上提高代码的可读性和可维护性。

        不管是阅读代码还是修改代码,“高内聚、松耦合”的特性可以让我们聚焦在某一模块或类中,不需要了解太多其他模块或类的代码,让我们的焦点不至于过于发散,降低了阅读和修改代码的难度。而且,因为依赖关系简单,耦合小,修改代码不至于牵一发而动全身,代码改动比较集中,引入 bug 的风险也就减少了很多。同时,“高内聚、松耦合”的代码可测试性也更加好,容易 mock 或者很少需要 mock 外部依赖的模块或者类。

        除此之外,代码“高内聚、松耦合”,也就意味着,代码结构清晰、分层和模块化合理、依赖关系简单、模块或类之间的耦合小,那代码整体的质量就不会差。即便某个具体的类或者模块设计得不怎么合理,代码质量不怎么高,影响的范围是非常有限的。我们可以聚焦于这个模块或者类,做相应的小型重构。而相对于代码结构的调整,这种改动范围比较集中的小型重构的难度就容易多了。

        代码是否需要 解耦 ?

            间接的衡量标准有很多,,比如,看修改代码会不会牵一发而动全身。除此之外,还有一个直接的衡量标准,也是我在阅读源码的时候经常会用到的,那就是把模块与模块之间、类与类之间的依赖关系画出来,根据依赖关系图的复杂性来判断是否需要解耦重构。

            如果依赖关系复杂、混乱,那从代码结构上来讲,可读性和可维护性肯定不是太好,那我们就需要考虑是否可以通过解耦的方法,让依赖关系变得清晰、简单。当然,这种判断还是有比较强的主观色彩,但是可以作为一种参考和梳理依赖的手段,配合间接的衡量标准一块来使用。

相关文章

  • 解耦

    解耦 对于大型重构, 最有效的手段就是 解耦, 解耦的目的使实现代码高聚合、松耦合。 解耦为何如此...

  • 20171127-03问题整理

    总摘要: 解耦. 接口降低. 架构. 2017-11-27摘要: 解耦. 接口降低. 架构. 1.为什么说解耦的...

  • 解耦

    今天小董给大家做了一个关于DMTP的精彩演讲,DMTP种种优秀的特性令我们这些听众叹为观止。 为何DMTP具有如此...

  • 解耦

    利用配置文件实现解耦 存在一个接口B 有3个实现类B1、B2、B3 在A类方法中需要调用B类实现代码: 此情况下,...

  • DDD 中的事件总线 (一)

    DDD 为什么需要event bus? 简单的说就是 解耦 ,无论是本地聚合间的解耦,还是微服务间的解耦. 没有e...

  • AFNetworking源码之AFAutoPurgingImag

    AFAutoPurgingImageCache图片缓存 通过2个protocol解耦,通过协议继承来解耦。协议相当...

  • iOS三方框架之 - AFNetworking的Https认证流

    对AFNetworking进行解耦AFNetworking解耦后可以分为以下几个模块:1. NSURLSessio...

  • 消息队列和RabbitMQ及AMQP协议介绍

    转自:二月_春风 文章地址 为什么要使用消息队列 异步处理 系统解耦解耦是消息中间队列解决的最本质问题。所谓解耦,...

  • 【5分钟背八股】说说你对aop的理解?

    AOP全称叫做 Aspect Oriented Programming 面向切面编程。它是为解耦而生的,解耦是程...

  • 2022-05-01代码重构 -- 大小规模重构

    大规模高层次重构 解耦代码 “解耦”为何如此重要? 过于复杂的代码往往在可读性、可维护性上都不友好。解耦保证代码松...

网友评论

      本文标题:解耦

      本文链接:https://www.haomeiwen.com/subject/zkglzktx.html