《读书笔记》重构-改善既有代码的设计(一)

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

1. 关于重构

1.1 什么是重构?

=》不改变外部可观察行为的前提下改善内部结构

1.2 什么时候重构?

1.添加功能时 2.修复Bug时 3.代码Review时

1.3 重构的好处

1.改善设计 2.增强可维护性 3.发现Bug

1.4 与性能的冲突

重构可能会有性能损耗,但它改善了设计使得软件的调整根据容易。 对性能上的问题可以用如下策略 1.时间预算法。对类似实时系统有极高要求的系统。对各个组件做出时间特性做出预算及控制 2.持续关注系统。统计相关数据 3.利用度量工具监控,运用统计数据找出瓶颈

2. 代码里的坏味道

2.1 重复代码,过长的函数,臃肿的类,有分布式影响的代码

=》剥离,抽取,独立

2.2 过长的参数表,对未来作出太多假设

=》不要试图写万能的函数或类

2.3 过分委托,过度耦合,过长消息链

=》砍掉Middle Man

2.4 临时变量,纯数据容器

=》Data和Operation一起

2.5 Switch,平行继承体系,类之间过于亲密

=》多态的优化

3. 重新组织函数

3.1 Extract Method(提炼函数)

=》改造代码段成小粒度函数,关键在于正确处理局部变量

3.2 Inline Method(内联函数)

=》找到有用的委托,清掉无用的委托,以实现代码来替换调用

3.3 Inline Temp

=》将变量替换为赋值的表达式

3.4 Replace Temp with Query(以查询代替临时变量)

3.5 Introduce Explaining Variable(引入解释性变量)

=》将复杂表达式的部分结果放到临时变量,并以清晰地命名来解释

3.6 Split Temporay Variable(分解临时变量)

=》非循环变量的临时变量建议不要被循环使用

3.7 Remove Assignments to Parameters(移除对参数的赋值)

=》这点我并不是很认同

3.8 Replace Method with Method Object(以函数对象取代函数)

=》如果是一个很Big的函数,这会是个好方法

3.9 Substitute Algorithm(替换算法)

=》修改你的代码,换成更为清晰地实现算法

4. 对象之间的迁移

5. 数据组织

6. 简化条件表达式,函数调用

7. 处理概括关系

8. 大型重构

posted @ 2010-12-26 14:03  toxot  阅读(240)  评论(0编辑  收藏  举报