【重构】改善既有代码设计的阅读笔记

所谓重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。重构是一种经千锤百炼形成的有条不紊的程序整理方法,可以最大限度地减少整理过程中引入错误的几率。这本书告诉你如何以一种可控制且高效率的方式进行重构,如何有条不紊地改进程序结构,而且不会引入错误。

重构第一个案例

如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。

第一步

构建完整的测试用例,保证重构之后的代码行为表现与之前无异。

Extract Method

修改变量命名

Move Method

Replace Temp with Query

Replace Conditional with Polymorphism 用多态取代条件表达式

Self Encapsulate Field 自封装字段(字段访问保护)

Replace Type Code with State/Strategy

用于改善基于类型码(Type Code)的条件逻辑,并通过引入状态模式(State Pattern)或策略模式(Strategy Pattern)来实现更清晰和可扩展的代码结构

重构原则

什么是重构

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

两顶帽子,当你使用重构技术进行开发时,把时间分配到两种不同的行为:添加新功能以及重构。添加新功能时,你不应该修改既有代码,只管添加新功能。

重构时你就不应该添加新功能而是只管改变程序结构。两顶帽子要随时切换,应该清除意识到你戴的是什么帽子。

为何重构

重构改进软件设计

重构使软件更容易理解

何时重构

事不过三,三则重构

代码的坏味道

Duplicated Code

Long Method(过长函数)

Large Class(过大的类)

Long Parameter List(过长参数列)

Divergent Change(发散式变化)

Shotgun Surgery(霰弹式修改)

Feature Envy(依恋情结)

重构列表