重构目录

重构1-5

1.搬移方法:那个类对某个方法多次调用则将该方法移到该类中,注意先搬移字段,再移到方法。

2.搬移字段:子类中常用的字段提升到父类中,父类中不常用的字段降低到子类中。

3.类与类的联系:除了继承外,多用聚合关系,或接口。视联系而定

4.方法重构:较长代码的方法应当分解出多个子方法,并由它调用,注意传入的参数和返回的参数是哪些。

5.策略类使用:减少switch,if-else等选择语句的使用,Strategy类作为value,State枚举(选择的情况)作为key,StrategyFactory工厂类,作为封装集合,存储元素,取出元素

重构6-10

6.分解依赖:即A类对B类的直接调用变成A类调用C接口,C接口底层调用了B类对象。

7.提取方法对象:指当你发现一个方法中存在过多的局部变量时,你可以通过使用“提取方法对象”重构其实就是将自身传递给另一个类(自身数据传递给另一个类的过程),由该类帮助自己实现功能。

8.分离职责(搬移方法):当一个类中承载了过多的职责时,需要将部分的职责分离到独立类中,这符合了面向对象的单一职责的原则,每个类尽量负责一个职责。

9.提炼重复内容:将重复使用的语句提炼出来,封装到一个“模块”上去,让其他地方调用该模块即可。

10.封装条件:当条件关系特别复杂时,此时需要封装条件,如果条件关系不需要参数则可以提取成属性,如果条件关系需要参数则可以提取成方法。

重构11-20

11.提取父类:即将一个类的基本属性,方法提取出来,封装在一个父类中,减少子类的代码,也可以将父类的代码共享给其他实现类。

12.使用条件判断代替异常:是指没有必要使用的异常做判断的条件改为条件判断。

13.提取工厂类:当一个类(Controller)负责多种对象创建时,则内部的代码量会特别多,此时可以应用抽象工厂模式为Controller类提供抽象工厂接口,根据其不同的工厂实现类传入,创建不同的对象。

14.提取子类:将父类中多余的操作移到子类中进行操作。

15.合并继承:是指如果子类的属性和方法也适合于基类,那么就可以移除子类,从而减少依赖关系。

16.分解方法:是指把我们所做的这个功能不停的分解方法,直到将一个大方法分解为名字有意义且可读性更好的若干个小方法。与“提取方法”和“提取方法对象”如出一辙,尤其是“提取方法”。

17.引入参数对象:对于某个的方法的参数特别多的时候,我们可以将这些参数封装成一个对象,再将该对象传入方法。

18.分解复杂判断:当条件关系存在嵌套多个条件时,应当用“尽快返回”(最重要的条件放在最前面)的方式简化代码。与“封装条件”类似,但是“封装条件”考虑的是单条的判断里涉及复杂的判断和参数多少。

19.引入契约式设计:对输入和输出的参数进行验证,确保对各种错误异常的有相应的处理,让用户便于查找错误的源头。

20.避免双重否定:即避免在条件语句里使用“!”,多用肯定语句,这样的代码会更加容易理解。

重构21-25

21.去除上帝类:即一个上帝类(万能类)什么事都能做,都由它做,为了遵循面向对象的单一职责原则,应当将其分解成多个功能单一明确的类。

22.为布尔方法命名:对于一个方法带有大量的bool参数,可以分离出几个默认bool值的方法出来

23.去除中间人对象:即对没有作用的中间类去掉,让两个类之间直接发生关系。

24.尽快返回:对于具有返回值的方法,应当考虑最有可能最快返回的情况,如某个参数为”0”或false时,则可以立刻返回某个特定返回值。

25.使用多态代替条件判断:当一个类内部需要根据不同类型的类而采取不同的策略时,我们可以将这些不同的策略封装到不同类型的类中,再有统一的一个抽象的接口调用这些不同的策略。注意:这里的不同类型的参数是在不同的子类中!

成分位置重构
成员属性/方法位置:父类,子类11.提取父类 14.提取子类
属性位置:类,方法2.搬移字段
方法位置:职责类,常用处1.搬移方法 8.分离职责
方法内部代码位置:类4.方法重构 7.提取方法对象 9.提炼重复内容 16.分解方法 24.尽快返回
方法上的参数位置:对象17.引入参数对象 22.为布尔方法命名
条件语句位置:属性,方法10.封装条件 12.使用条件判断代替异常 18.分解复杂判断 20.避免双重否定 25.使用多态代替条件判断
位置:5.策略类使用 13.提取工厂类 19.引入契约式设计 21.去除上帝类
类与类联系位置:6.分解依赖 15.合并继承 23.去除中间人对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值