1
减少代码耦合

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

满足单一职责原则

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

模块化

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

业务与非业务逻辑分离

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

通用代码下沉

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

继承、多态、抽象、封装

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

应用模块等设计模式

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

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


Gabriel
36 声望4 粉丝

« 上一篇
PHP的Trait