怎么提高代码复用性?

算法产
• 阅读 6958
减少代码耦合

对于高度耦合的代码,当我们希望复用其中的一个功能,想把这个功能的代码抽取出来成为一个独立的模块、类或者函数的时候,往往会发现牵一发而动全身。移动一点代码,就要牵连到很多其他相关的代码。所以,高度耦合的代码会影响到代码的复用性,我们要尽量减少代码耦合。

满足单一职责原则

我们前面讲过,如果职责不够单一,模块、列设计大而全,那么依赖它的代码就会比较多,进而增加代码的耦合度。根据上一点,也就会影响到代码的复用性。相反,越细粒度的代码,代码的通用性越好,越容易被复用

模块化

这里的“模块”,不单单指一类构成的模块,还可以理解为单个类、函数。我们要善于将功能独立的代码,封装成模块。独立的模块就像一块一块的积木、更加容易复用,可以直接拿出来搭建更加复用的系统。

业务与非业务逻辑分离

越是跟业务无关的代码越是容易复用,越是针对特定业务的代码就越难复用。所以,为了复用跟业务代码无关的代码,我们将业务和非业务逻辑代码分离,抽取成一些通用的框架、类库、组件等。

通用代码下沉

从分层的角度来看,越是底层的代码越通用、会被越多的模块调用,越是应该设计足够可以复用。一般情况下,代码,在代码分层之后,为了避免交叉调用关系混乱,我们只允许上层代码调用下层及同层代码之间的调用,杜绝下层代码调用上层代码、所以,通用的代码我们尽量下沉到更下层。

继承、多态、抽象、封装

在讲面向对象特性的时候,我们讲到,利用继承,可以将公共的代码抽取到父类,子类复用父类的属性和方法。利用多态,我们可以动态地替换一段代码的部分逻辑,让这段代码可复用。除此之外,抽象和封装,从更加广义的层面、而非狭义的面向对象特性的层面来理解的话、越抽象、越不依赖具体的实现,越容易复用。代码封装成模块,隐藏可变的细节、暴露不变的接口,就容易复用。

应用模块等设计模式

一些设计模式,也能提高代码的复用性。比如,模版模式利用多态来实现,可以灵活替换其中部分代码,整个流程模版代码可复用。

总结:
最近在学习-设计模式之美(王争老师),作为对自己的要求,也会吐槽同事的代码的可读性的基础上就想好好学习,看看优秀的代码怎么写,为什么这么写。这个过程是思想转变的一个过程!只有自己多看看优秀的代码怎么写的才能够把代码写的越来越好,现在学到了21课,理解了SOLID,KISS,DRY等原则,也跟着老师把代码实现一遍,也去重新查询自己原来模糊不清的概念。比如接口、抽象类、trait等,更加加深了印象。

点赞
收藏
评论区
推荐文章
带我的粉丝们一起揭秘spring aop底层原理及实现
实在是不知道写什么了,博主变low了呀。springaop使得我们的aop开发工作变得简单,这是众所周知的今天还是带我的粉丝们一起揭秘springaop底层原理及实现吧哈哈哈哈AOP面向切面编程:主要是通过切面类来提高代码的复用,降低业务代码的耦合性,从而提高开发效率。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。AOP实现原理
Stella981 Stella981
4年前
Shell编程基础
本文索引:shell中的函数shell中的数组告警系统需求分析shell中的函数shell作为一种编程语言,必然有函数。函数可以大大减少代码,提高代码复用率。shell中的函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。格式
Stella981 Stella981
4年前
JavaScript 代码整洁之道
代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。本文并不是代码风格指南,而是关于代码的可读性、复用性、扩展性探讨。我们将从几个方面展开讨论:1.变量2.函数3.对象和数据结构4.类5.SOLID
Easter79 Easter79
4年前
Spring框架中的AOP技术
1、AOP概述AOP技术即AspectOrientedProgramming的缩写,译为面向切面编程。AOP是OOP的一种延续,利用AOP技术可以对业务逻辑的各个部分进行隔离,从使得业务逻辑各部分之间的耦合性降低,提高程序的可重用性,同时提高了开发的效率。AOP采用横向抽取机制,取代了传统纵向继承体系重复性代码,AOP可以在不修改源代码的
Wesley13 Wesley13
4年前
DAO 四个包的建立
一、DAO四个包的建立,降低代码之间的耦合性?  之前写代码,都是在一个包下。代码耦合性较高,不利于后期的维护。  dao(代码分层?)有利于后期的维护代码,修改方便。com.aaa.dao存放dao相关的类型处理数据库的链接存取数据。com.aaa.servlet存放serv
Wesley13 Wesley13
4年前
Java基础28
1/2继承的概述:31.提高了代码复用性,简化了代码42.让类与类之间产生了继承关系,才有了后面的多态特性的存在5注意:千万不要为了获取其他类的功能简化代码,而建立继承关系,必须要类与类之间存在继承关系,继承关系:isa67子类拥有父类的成员,子类不能拥有父类
Wesley13 Wesley13
4年前
2020.8.07 微信小程序(组件封装)
今天说一下微信小程序组件的封装…为什么要封装组件?写组件的目的就是为了复用,它的好处太多了a.写更少的代码。b.减少开发时间。c.代码的bug更少。d.占用的字节更少。…组件复用使我们的代码组织变得非常灵活。那么组件到底怎么封装,其实就和vue组件封装的思
Wesley13 Wesley13
4年前
C# 面向接口编程
面向接口编程就是将对象中的某个功能提取出来作为接口,而功能的具体实现则交由继承自这个接口的实现类处理。面向接口的好处是降低程序的耦合性,当有新的功能时只需要对新功能进行编写,不需要修改已有的代码下面是一个简单的范例:1//父类2publicclassDuck3{4
感受 Vue3 的魔法力量
摆脱了书写声明式的代码,用起来很流畅,提升不少效率,封装可复用逻辑,将UI和逻辑分离,提高复用性,view层代码展示更清晰,少去了很多配置,使用起来更便捷
linbojue linbojue
1年前
史上最全的后端技术
系统开发1.高内聚/低耦合高内聚指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。模块的内聚反映模块内部联系的紧密程度。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方
探讨篇(三):代码复用的智慧 - 提升架构的效率与可维护性
作者:京东物流冯志文前两篇从服务粒度和服务内的分层架构角度探讨,本文继续从服务间代码复用角度探讨。背景在分布式架构中,代码复用是个难题。那么如何处理代码功能共享的问题呢?本文结合日常实践中的案例,介绍几种分布式架构中管理代码复用性的技术。包括代码复制、共享