`
qinysong
  • 浏览: 190875 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Re: 《重构-改善既有代码的设计》笔记

阅读更多

在《重构》中,Martin Fowler按照重构所针对的代码内容进行了分类,包括对函数的重构、对对象特性的重构、对数据组织的重构、对条件表达式的重构以及对类层次的重构,并按照这种分类组织了章节。

除了按照重构所针对的代码内容进行分类外,按照采用手法进行分类,我觉得也可以从另一个角度帮助我们更进一步理解重构的进行方式。

通过整理,按照采用手法分类如下:

1、提炼
就是对某个过程的一部分,或某个事物的一部分进行抽象并概念化,以减小所表达的目的(要做什么)和实现(做什么,如何做)之间的语义差距。

运用提炼的重构手法包括
Extract Method、
Split Temporary Variable、
Extract Class、
Extract Subclass、
Extract Superclass、
Extract Interface等

2、内联
就是用其直接实现替换原来的间接调用,通过内联可以去掉意义不大的间接性。

运用内联的重构手法包括
Inline Method、
Inline Temp、
Inline Class

3、移动
在类之间(包括父类和子类之间)移动属性和方法,以使类之间职责更明确更清晰。

运用移动的重构手法包括
Move Method、
Move Field、
Pull Up Field、
Pull Up Method、
Pull Up Constructor Body、
Push Down Method、
Push Down Field

4、替换
将一种实现方式用另一种实现方式替代,以便于更直接更集中和更灵活

运用替换的重构手法包括
Replace Temp with Query、
Replace Method with Method Object、
Replace Date Value with Object、
Replace Array with Object、
Replace Magic Number with Symbolic Constant、
Replace Record with Data Class、
Replace Type Code with Class、
Replace Type Code with Subclasses、
Replace Type Code with State/Strategy、
Replace Subclass with Fields、
Replace Nested Conditional with Guard Clauses、
Replace Conditional with Polymorphism、
Replace Paramether with Explicit Methods、
Replace Parameter with Method、
Replace Constructor with Factory Method、
Replace Error Code with Exception、
Replace Exception with Test、
Replace Inheritance with Delegation、
Replace Delegation with Inheritance

5、改变
改变和替换语义上有些类似,其间的差别还不是很清楚

运用改变的重构手法包括
Change Value to Reference,
Change Reference to Value,
Change Unidirectional Association to Biderectional
Change Biderectional Association to Unidirectional

6、其他
包括增加Add、移除Remove、隐藏Hide、引入Introduce、封装Encapsulate、合并Consolidate等等

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics