纲要

3W1H

  1. why 为什么重构
  2. what 重构什么
  3. when 什么时候重构
  4. how 如何重构

重构的定义

软件设计大师 Martin Fowler 这样定义重构:

“重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低。”

重构的目的:为什么要重构 (why)

首先,重构是时刻保证代码质量的一个极其有效的手段,不至于让代码腐化到无可救药的地步。

其次,优秀的代码或架构不是一开始就能完全设计好的。是一个迭代,不断演进的过程。

最后,重构是避免过度设计的有效手段。

tip: 初级工程师在维护代码,高级工程师在设计代码,资深工程师在重构代码。

重构的对象:到底重构什么(what)

根据重构的规模,我们可以笼统地分为大规模高层次重构(大重构)和小规模低层次重构(小重构)。

大重构:

  1. 重构的范围
    • 系统
    • 模块
    • 代码结构
    • 类与类之间的关系
  2. 重构手段
    • 分层
    • 模块化
    • 解耦
    • 抽象可复用组件
  3. 重构工具
    • 设计思想
    • 设计原则
    • 设计模式

小重构:

  1. 重构范围
    • 函数
    • 变量
  2. 重构手段
    • 规范命名
    • 规范注释
    • 消除超大类或函数
    • 提取重复代码

tip:我们重构的对象是软件重个生命周期。

重构的时机:什么时候重构(when)

重构可以是一刀切,也可以分阶段。我们提倡的策略是持续重构。

把重构作为我们开发的一部分,见到不符合编码规范,不好的设计,超长函数都可以随时重构一下。成为一种开发习惯,对项目对自己都会很有好处。

tip: 持续重构意识很重要

重构的方法:又该如何重构(how)

对于大重构难度比较大,需要有组织,有计划地进行,分阶段地小步快跑,时刻让代码处于一个可运行的状态。

对于小重构难度相对小,因为影响范围小,改动耗时短,所以只要你愿意并且有时间,随时随地都可以重构。

tip: 不管大还是小重构,都要保证代码可运行,逻辑正确的状态。

关于我

我的博客:https://yezihack.github.io

欢迎关注我的微信公众号【空树之空】,共同学习,一起进步~ 空树之空