软件重构
重构工具箱
- 抽取方法:将代码段提取出来,形成单独的函数
- 抽取类:将函数或代码段提取出来,形成单独的类
- 抽取接口:将相似的,或者同类型的代码抽取出来形成接口,以及接口下的多个实现
重构的步骤
第一步:分解大函数
对于超级大函数,解决的最有效的方法就是分解,按照功能一步一步的进行分解,还原其应有的优化结构。这个过程我们常用的重构方法是“抽取方法”
对于重复的代码,应抽取到一个统一的函数中为其他各处所调用
一些块操作的语句,如条件语句、循环语句、try语句,都可能成为抽取函数的标志
常见的问题:
将代码从原函数中抽取出来形成新的函数,数据只能通过参数和返回值进行交互,这将给我们带来诸多麻烦
第二步:拆分大对象
拆分大对象采用”职责驱动设计“思想:就是要求我们设计的所有类和接口都要有自己的职责定义。儿类和接口内部的所有方法和属性都要围绕着该职责来进行,它们都是高度相关的。每个类和接口绝不去做跟自己职责无关的事情
拆分大对象采用的重构方法为抽取类
第三步:提高代码复用率
当重复代码存在于同一对象时-抽取方法
当重复代码存在于不同对象中时-抽取类
不同对象中复用代码的另一种方法-封装成实体类
当重复代码所在类具有某种并列关系时-抽取父类
当出现继承泛滥时-将继承转换为组合,将代码不同的部分封装到一个统一接口下的多个实现类中