《重构》读书笔记

《重构》学习笔记(10)-- 重构的实战

2019-10-21  本文已影响0人  若隐爱读书

梳理并分解继承体系

某个继承体系同时承担两项责任,那么就建立两个继承体系,并通过委托关系让其中一个可以调用另一个。


重构前

梳理后,重构为:


重构后
做法:

Convert Procedural Design to Objects(将过程化设计转化为对象设计)

有一些传统过程化风格的代码,将数据记录变成对象,将大块的行为分成小块,并将行为移入相关的对象中


重构前
重构后

做法

Separate Domain from Presentation(将业务/领域和表述/显示分离)

某些GUI类之中包含了领域逻辑。将领域逻辑分离出来,为他们建立独立的领域类.


重构前
重构后

做法

Extract Hierarchy(提炼继承体系)

你有某个类做了太多工作,其中一部分工作是以大量条件表达式完成的。
建立继承体系,以一个子类来表示一种特殊情况。


重构前
重构后

在渐进式设计过程中,常常会有这样的情况:一开始设计者只想以一个类实现一个概念;但随着设计方案的演化,最后却可能一个类实现了两个、三个乃至十个不同的概念。一开始,你建立了这个简单的类。数天或数周之后,你可能发现:只要加入一个标记和一两个测试,就可以在另一个环境下使用这个类;一个月之后你又发现了另一个这样的机会;一年之后,这个类就完全一团糟了:标记变得和条件表达式遍布各处。

当你遇到这种瑞士军刀般的类--不但能够开瓶开罐、砍小树枝、还能在演示会上打出激光强调重点--你就需要一个好策略(亦如本项重构),将它的各个功能梳理并分开。不过,请注意,只有当条件逻辑在对象的整个生命周期保持不变,本重构导入的策略才适用。否则你可能必须在分离各种状况之前先使用Extract Class

Extract Hierarchy 是一项大型重构,如果你一天之内不足以完成它,不要因此失去勇气。将一个极度混乱的设计方案梳理出来,可能需要数周甚至数月的时间。你可以先进行本项重构中的一些简易步骤,稍微休息一下,再花几天时间编写一些能体现产出的代码。当你领悟到更多东西,再回来继续本项重构的其他步骤--这些步骤将因为你的领悟而显得更加简单明了。

做法
我们为你准备了两组重构手法。第一种情况是:你无法确定哪些地方会发生变化。这时候你会希望每次一小步地前进。

如果你非常清楚原始类会有哪些变化情况,可以使用另一种做法。

上一篇 下一篇

猜你喜欢

热点阅读