代码重构的常用方法 (C++实现)

0 概述

重构定义

重构是在软件开发中改善已有代码的一种方法,通过代码重构可以改进软件的设计、使得软件更容易理解、有利于Bug的发现以及提高后续开发效率。Martin Fowler在《重构:改善既有代码的设计》一书中对“重构”提供了两种形式的定义:

  1. 重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
  2. 重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

重构时机

对于何时重构,Martin Fowler认为不能为重构而重构,应该在 “当你想做别的事情,而重构可以帮助你把那些事情做好” 时,才去进行重构。并给出了四个常见的重构时机:

  1. 事不过三,三则重构;
  2. 添加功能时重构;
  3. 修补错误时重构;
  4. 复审代码时重构。

对于何时不应该重构,Martin Fowler认为如果“既有代码是在太混乱,重构它还不如重新写一个简单”时就应该重写,而不是重构。重写的一个清晰的信号是:现有代码根本不能正常运作。

重构既是一件脑力活,也是一件体力活。特别是在软件中的“代码坏味道”积累到一定量时,就需要花费大量的时间和精力才能完成对代码的重构。因此,需要加强对“代码坏味道”的嗅觉,在发现“代码坏味道”时及时地去重构,通过不断的微重构来阻止代码架构的腐化,从而避免走上代码重写的艰难之路。

本文主要对《重构》一书中提到的一些常见的“代码坏味道”和对应重构手法的总结。