重构(Refactoring)
前言
最近一直在做前端重构的工作,多少有些感想,特此记录。
一、什么是重构?为什么要重构?重构要达成什么目标?
什么是重构
在不改变代码外在行为的前提下,对代码进行修改,以改进程序的内部结构。
为什么要重构
在软件工程中,开发迭代的过程实际上是一个熵增的过程,软件系统会随着生命周期的进行变得越来越臃肿、混乱、冗余,从而增加维护与进一步迭代的成本。而重构可以偿还技术债务、改进软件结构、减小维护和迭代的成本、增加产品可信。
重构要达成什么目标?
- 系统结构重新梳理:旧系统在设计上可能有许多疏漏,由于经验的欠缺或者考虑不周到,这是难以避免的。新系统应该见贤思齐、查漏补缺,例如重新设计基类、文件结构和继承关系,争取让系统更加完善。
- 公共资源重新梳理:
- 业务需求重新梳理:
二、重构有哪些分类?什么时候重构?重构有哪些原则?
重构有哪些分类?
- 小粒度重构(函数级、小模块)
- 大粒度重构(架构级、大模块)
什么时候重构?
- 新增需求时(小粒度)
- 修改BUG时(小粒度)
- 复审代码时(大粒度)
- 代码逻辑混乱、依赖混杂(大粒度)
重构有哪些原则?
- 先评审,再重构,不要反复推翻重来
- 确保模块的功能完整,否则不重构该模块
- 新增需求时,不要改动既有代码(小粒度)
- 重构既有代码时,不要新增功能(小粒度)
三、重构工作流程
- 前期准备,搭架子
- 构建对应技术栈的文件结构、代码关系
- 整理公共资源、公共能力
- 整理业务需求,确保没有遗漏的需求
- 前期准备,分需求、培训(主要涉及文件结构和公共资源)
- 开始重构