摘要: ICloneable 接口包含一个成员 Clone,它用于支持除 MemberwiseClone 所提供的克隆之外的克隆。 实现接口: [代码]调用接口:[代码] 结果: 阅读全文
posted @ 2010-01-12 15:59 双击 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 这个重构建议是对第10天:提取方法的继续 我们在一个类中提取出来了大量的私有方法和变量,会造成这个类臃肿不堪,难以阅读 因此最好提取出来方法对象,用以将功能的一个个逻辑分离开 旧的代码: [代码]重构后的代码,我们通过构造方法,将返回计算结果的类的引用传递给包含多个计算方法的新建对象,或者向方法对象的构造函数中单独传递各个参数。:[代码] 阅读全文
posted @ 2010-01-05 17:17 双击 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 今天的重构我觉得没有太大用处 旧的代码 [代码]重构后的代码:[代码]该重构主要用来单元测试时模拟静态类 阅读全文
posted @ 2010-01-05 16:35 双击 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 今天的重构很有意思,旧的代码是根据参数State来调用三个不同的方法,获取三个地方的装运量 代码如下: [代码]如果我们现在要加一个Chicago的条件,那么不得不修改整个ShippingInfo重构后用策略模式,对每一个条件加一个类,并且实现同一个接口,以后如果希望添加新的条件,只需添加新的实现类就可以了,实现对修改关闭,对扩展开放重构后的代码如下[代码]故事还没完,书的作者又进行了如下的重构,... 阅读全文
posted @ 2010-01-04 18:21 双击 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 在博客园上看见一个广告感觉很有意思哈哈,看见右侧的广告了吗?我记得google的广告算法是根据当前页面的关键字自动匹配合适的广告,看来搞IT的果然是民工呀纯属娱乐,如有雷同,概不负责 阅读全文
posted @ 2010-01-03 23:28 双击 阅读(366) 评论(0) 推荐(2) 编辑
摘要: 这一条重构的建议是尽量提取方法,使得代码更加清晰明了旧的代码:[代码]为了弄明白CalculateGrandTotal() 这个方法的意思你会把代码整个看一遍,从而知道是做了3件事情1,计算总额2,计算优惠折扣3,添加消费税相比较而言我们可以作如下重构[代码]将三件事情分成三个子方法,这样每个方法可以专司其职,使得代码更具有可读性这是一个很重要的重构方法,方法尽量不要超过100行,因为越长的方法越... 阅读全文
posted @ 2010-01-03 22:53 双击 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 这个重构方法其实就是说把类的接口抽取出来,参数传递的时候以接口而不是具体的类个人理解这就是面向接口的编程思想吧,有哪位达人知道的请告知一下例子很简单,旧代码:[代码]重构后的代码:[代码]我们将ClassRegistration 类的两个方法Create() ,Transfer() 抽取出来创建成IClassRegistration接口在ProcessRegistration这个方法中就可以不依赖... 阅读全文
posted @ 2010-01-03 22:42 双击 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 之前有说过尽量少用继承 这个方法就是讲这个的 旧的代码: [代码]重构后的代码:[代码]在这个例子中,Child并不是Sanitation(is - a),两者没有很强烈的关系,所以不应该强行用继承这里的委托不是.net里的关键字delegate,应该是说把非关本类的方法交给其他类来出来,委托他人完成这里的委托两个字来自:31 Days of Refactoring Refactoring Da... 阅读全文
posted @ 2010-01-03 22:31 双击 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 其实这一条很好理解,就是对类名,变量名,参数名,方法名乱写,这样很容易搞错 比方说起一些名字叫a1,a2就比较难以理解 应该起一些更加具有描述性,更助于理解的名字 示例代码: 旧代码 [代码]重构后的代码:[代码] 阅读全文
posted @ 2010-01-03 21:48 双击 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 和第4天的下移方法一样,只不过是方法变成了字段 阅读全文
posted @ 2010-01-03 21:35 双击 阅读(132) 评论(0) 推荐(0) 编辑