概述
重构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.去除中间人对象 |
最后
以上就是细腻西牛为你收集整理的重构目录的全部内容,希望文章能够帮你解决重构目录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复