2009-08-30 14:23:03
摘要:Remove God Classes:移除工具类
在传统的代码库中,我们常常会看到一些违反了SRP原则的类。这些类通常以Utils或Manager结尾,有时也没有这么明显的特征而仅仅是普通的包含多个功能的类。这种God 类还有一个特征,使用语句或注释将代码分隔为多个不同角色的分组,而这些角色正是这一个类所扮演的。久而久之,这些类成为了那些没有时间放置到恰当类中的方法的垃圾桶。这时的重构需要将方法分解成多个负责单一职责的类。
阅读全文
2009-08-23 19:02:42
摘要:Push Down Method:下移方法
与下移字段一样,如果父类中某个方法只与部分子类有关,将这个方法移到相关的那些子类去。
阅读全文
2009-08-19 16:32:34
摘要:Push Down Field:下移字段
与上移字段相反的重构是下移字段,如果父类中某个字段只被部分子类用到,将这个字段移到需要它的那些子类去。
阅读全文
2009-08-16 18:16:45
摘要:Pull Up Mothod:方法上移
今天介绍的重构方法和上一篇字段上移十分类似。我们今天处理的不是字段,而是方法。
有些方法,在各个子类中产生完全相同的结果,将该方法移至到父类。
阅读全文
2009-08-15 17:44:12
摘要:Pull Up Field:字段上移
两个子类拥有相同的字段,将此一字段上移到父类。
阅读全文
2009-08-13 23:58:24
摘要:Extract class:提炼类
你也许听过类似这样的教诲:一个class应该是一个清楚的抽象,处理一些明确的责任。但是在实际工作中,class会不断成长扩展。于是随着责任不断增加,这个class会变得很复杂。很快这个class就会变成一团乱麻。建立一个新的class,将相关的字段和方法从旧class搬移到新class。
阅读全文
2009-08-12 20:18:00
摘要:Introduce Design By Contract:契约式设计
契约式设计(DBC,Design By Contract)定义了方法应该包含输入和输出验证。因此,可以确保所有的工作都是基于可用的数据,并且所有的行为都是可预料的。否则,将返回异常或错误并在方法中进行处理。在我们的示例中,输入参数很可能为null。由于没有进行验证,该方法最终会抛出NullReferenceException。在方法最后,我们也并不确定是否为用户返回了一个有效的decimal,这可能导致在别的地方引入其他方法。
阅读全文
2009-08-10 10:44:41
摘要:某个函数返回的对象,需要由函数调用者执行向下转型动作,将向下转型动作移到函数中。
阅读全文
2009-08-03 20:27:24
摘要:你希望在创建对象时不仅仅是对它做简单的建构动作,将构造函数替换为工厂函数。
阅读全文
2009-07-30 13:19:11
摘要:Replace Exception with Test:以测试取代异常
面对一个调用者可预先加以检查的条件,你抛出了一个异常,请修改调用者,使它在调用函数之前先做测试。
阅读全文