重构_基本方式

重构

近日阅读了 《重构,改善既有代码的设计》一书,自己的一些总结

一、重构

1.1 什么是重构

  • 在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构

1.2 为何重构

  • 改进项目设计
  • 使程序代码更容易被理解
  • 重构方便我们找到bug
  • 提高我们编程的速度

1.3 何时重构

三次法则:第一次做某件事时只管去做;第二次做类似的事会产生反感,但无论如何还是可以去做;第三次再做类似的事,你就应该重构。下面,就是触发条件

  • 添加功能时重构
  • 修补错误时重构
  • 复审代码时重构

如果项目已经非常接近最后期限,你不应该再分心于重构,因为已经没有时间了。不过多个项目经验显示:重构的确能够提高生产力。如果最后你没有足够时间,通常就表示你其实早该进行重构。

二、重构的方法

1. 常用重构方法

1.1 提取方法(Extract Method )
  • 同样代码出现在多处地方,方便管理,抽离成方法,如继承方式的父类方法
  • 方法内部代码长度过长,将方法内部的不同处理逻辑单独抽离出来。比如:可以抽成校验、计算、业务逻辑1、2、3… 、 最终处理等函数
1.2 提取接口(Extract Interface)
  • 当多个类存在相同的行为时,可以将这个方法单独移动到父类或者接口中。
1.3 移动方法(Move Method )
  • 当本对象方法内部存在过多对其他对象的属性进行操作,且不操作自身属性。何不把方法迁移到对方内部。简单讲,单独对其他对象的操作,例如计算该对象的某个属性值是否达到范围,应该将该方法移动到该对象内部。
1.4 用状态/策略替换类型代码( Replace Type Code with State/Strategy )
  • 条件判断语句过多,如 if-else if … else ,又如经典的 switch 语句。可以将其抽离成方法,改成多态调用。如采用 状态(State )模式 或者策略(Strategy)模式,其中就需要通过提取方法移动到适合的位置。
1.5 自封装字段(Self Encapsulate Field )
  • 这里其实就是java的三大特点之一,封装。对象属性不应该直接暴露出去。对属性的各种操作应该在特定的方法,就如我们所说的 get/set 方法
1.6 引入参数对象(Introduce Parameter Object)
  • 当方法参数过长时,应判断能否减少参数,在不能减少参数的情况下,应该提取参数为对象
  • 当参数可能方式改变时,采用参数对象。如:需求突然发生改变,要求对其做出限制等操作时,方法需要加入新的参数。为了避免其他地方调用可用方法参数来做改变
  • 当这些参数构成某种意义时,可以引入参数对象
1.7 书中的重构列表

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值