重构二:重构原则

269 阅读2分钟

何谓重构

  • 对软件内部结构的一种调整,目的是不改变软件可观察行为的前提下,提高其可理解性,降低修改成本。

两顶帽子

  • 实现功能和重构就是两顶帽子,他们属于两种不同的行为,一次只能处于一种状态下,不能即实现功能又进行重构,但是实际情况是可能一会增加新功能一会要进行重构,要清楚你当前戴的是哪顶帽子。

为何重构

  • 重构可以良好的控制自己的代码。重构是个工具,他有以下几个目的
  1. 改进软件设计
  2. 使软件更容易理解
  3. 帮助找到bug
  4. 提高变成速度

何时重构

  • 三次法则:事不过三,三则重构。
  • 添加功能时重构

当前代码无法让我轻松地添加新功能时重构

  • 修补错误时重构

运用重构,让代码更具可读性,重构的过程可以帮助加深自己的理解,快速定位到bug

  • 复审代码时重构

有助于团队中传播知识

怎么对经理说

  • 集中在经历关注的点上说
  • 如果不统一,如果认为重构之后更快,那就不要告诉经理

间接层和重构

计算机科学是这样一门科学:他相信所有问题都可以通过增加一个间接层来解决

  • 价值

允许逻辑共享 分开解释意图和实现 隔离变化 封装条件逻辑

重构的难题

  • 找到重构技术的局限性
  • 数据库:业务与数据库结构紧密耦合,如果对象模型和数据库模型不断变化,则加入中间层更合理
  • 修改接口:不能影响他人使用,可先用就接口调用新接口,同时提供新旧接口,将就接口标记为deprecated。
  • 难以通过重构手法完成的设计改动:如果重构为另一个设计比较简单,则选择最简单的设计
  • 何时不该重构:
  1. 项目快要结束时,那时你已经没有足够的时间了
  2. 代码是在太混乱,重构还不如重写
  3. 什么时候重写:现有代码根本不能正常运行,loudog
  4. 重构之前,原代码功能必须正常

重构与设计

  • 预先做设计,但不必找出最优解,合理即可,随着问题加深,就可以进行重构设计了

重构与性能

    1. 时间预算法
    1. 持续关注法
    1. 统计数据法
  • 重构不能凭空想象,需要用工具定位