目的:可读即可写
步骤:拆函数 拆对象 代码复用 扩展点 设计模式降依赖 分层 领域模型
方法:提取-抽取(统一) 合并-内联(同一)
种类:函数 对象 数据 表达式 方法 继承
--重新组织函数:
抽取方法(提取) 内联方法(合并) 内联临时变量(合并) 查询替代临时变量(合并) 引入解释性变量(可读性) 分解临时变量(可读性) 移除对参数的赋值(修改参数变为修改变量) 对象替代方法(提取) 替换(转换)
--对象间迁移:
迁移方法(职责划分) 迁移字段(职责) 抽取类(提取) 内联类(合并) 增加委托关系(分割) 移除中间关系(去除) 引入新方法(提取) 引入本地扩展(添加子类)
--重新组织数据:
封装属性变量(封装)对象取代数值(封装) 值对象和引用对象互换 对象取代数组 复制被观察数据(mvc) 单双向关联 特殊字改为变量(封装) 封装集合对象(添加动作而不是set get) 记录替换成值对象(结果替换成对象) 状态或策略模式、子类/类替代类型代码(封装) 替换子类为字段
--简化条件表达式:
分解条件表达式(封装) 合并条件表达式(判断和结果) 移除循环控制标记 嵌套条件变为直接return 接口多态替换条件语句 null对象替换null 复杂判断写成断言(可读性)
--重构方法:
重命名方法名 增减参数 分离查询与更新 参数化方法(合并) 参数替换成方法 属性替换成方法(提取) 参数替换成方法(合并) 引入参数对象(参数替换成对象) 移除set函数(初始值不能改变的时候) 隐藏方法(private) 封装下溯造型(封装) 错误代码替换为异常,异常替换为测试代码(转置)
--继承
上移/下移字段-方法,上移构造函数,抽取父类/子类/接口 替换成模板模式 继承代理互换
分享: