上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 40 下一页
摘要: 概念:本文中的“分离职责”是指当一个类有许多职责时,将部分职责分离到独立的类中,这样也符合面向对象的五大特征之一的单一职责原则,同时也可以使代码的结构更加清晰,维护性更高。正文:如下代码所示,Video类有两个职责,一个是处理video rental,另一个是计算每个客户的总租金。我们可以将这两个职责分离出来,因为计算每个客户的总租金可以在Customer计算,这也比较符合常理。usingSystem.Collections.Generic;usingSystem.Linq;namespaceLosTechies.DaysOfRefactoring.BreakResponsibilities. 阅读全文
posted @ 2013-02-05 09:58 于为 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“提取方法对象”是指当你发现一个方法中存在过多的局部变量时,你可以通过使用“提取方法对象”重构来引入一些方法,每个方法完成任务的一个步骤,这样可以使得程序变得更具有可读性。正文:如下代码所示,Order类中的Calculate方法要完成很多功能,在之前我们用“提取方法”来进行重构,现在我们采取“提取方法对象”来完成重构。using System.Collections.Generic;namespace LosTechies.DaysOfRefactoring.ExtractMethodObject.Before{ public class OrderLineItem ... 阅读全文
posted @ 2013-02-05 09:57 于为 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“分解依赖” 是指对部分不满足我们要求的类和方法进行依赖分解,通过装饰器来达到我们需要的功能。正文:正如下面代码所示,如果你要在你的代码中加入单元测试但有一部分代码是你不想测试的,那么你应用使用这个的重构。下面的例子中我们应用静态类来完成某些工作,但问题是在单元测试时我们无法mock静态类,所以我们只能引入静态类的装饰接口来分解对静态类的依赖。从而我们使我们的调用类只需要依赖于装饰接口就能完成这个操作。namespace LosTechies.DaysOfRefactoring.BreakDependencies.Before{ public class AnimalFee... 阅读全文
posted @ 2013-02-05 09:56 于为 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“使用策略类” 是指用设计模式中的策略模式来替换原来的switch case和if else语句,这样可以解开耦合,同时也使维护性和系统的可扩展性大大增强。正文:如下面代码所示,ClientCode类会更加枚举State的值来调用ShippingInfo的不同方法,但是这样就会产生很多的判断语句,如果代码量加大,类变得很大了的话,维护中改动也会变得很大,每次改动一个地方,都要对整个结构进行编译(假如是多个工程),所以我们想到了对它进行重构,剥开耦合。namespace LosTechies.DaysOfRefactoring.SwitchToStrategy.Before{ .. 阅读全文
posted @ 2013-02-05 09:55 于为 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的把某些计算复杂的过程按照功能提取成各个小方法,这样就可以使代码的可读性、维护性得到提高。正文:如下代码所示,CalculateGrandTotal方法里面包含了多个逻辑,第一计算subTotal 的总和,第二subTotal 要循环减去discount,也就是计算Discounts,第三就是计算Tax。所以我们可以根据功能把他们拆分成三个小方法。using System.Collections.Generic;namespace LosTechies.DaysOfRefactoring.ExtractMethod.Before{ public class Receipt ... 阅读全文
posted @ 2013-02-05 09:54 于为 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“提取接口” 是指超过一个的类要使用某一个类中部分方法时,我们应该解开它们之间的依赖,让调用者使用接口,这很容易实现也可以降低代码的耦合性。正文:如下代码所示,RegistrationProcessor类只使用到了ClassRegistration类中的Create方法和Total 字段,所以可以考虑把他们做成接口给RegistrationProcessor调用。namespace LosTechies.DaysOfRefactoring.ExtractInterface.Before{ public class ClassRegistration { ... 阅读全文
posted @ 2013-02-05 09:53 于为 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“使用委派代替继承”是指在根本没有父子关系的类中使用继承是不合理的,可以用委派的方式来代替。如下代码所示,Child和Sanitation(公共设施)是没有逻辑上的父子关系,因为小孩不可能是一个公共设施吧!所以我们为了完成这个功能可以考虑使用委派的方式。namespace LosTechies.DaysOfRefactoring.ReplaceInheritance.Before{ public class Sanitation { public string WashHands() { return "Cleaned... 阅读全文
posted @ 2013-02-05 09:52 于为 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的改名(方法,类,参数)是指在写代码的时候对类、方法、参数、委托、事件等等元素取一个有意义的名称。正文:如下代码所示,加入一个公司建立一个员工的类,类中有一个员工名字的字段和一个按照小时计算员工收入的方法,那么下面代码的取名就显得很难理解了,所以我们会重构名称。namespace LosTechies.DaysOfRefactoring.Rename.Before{ public class Person { public string FN { get; set; } public decimal ClcHrlyPR() { ... 阅读全文
posted @ 2013-02-05 09:51 于为 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的降低字段和前篇的提升字段正好相反,就是把基类中只有某些少数类用到的字段降低到使用它们的子类中。正文:如下代码所示,基类Task类中的_resolution字段只会在子类BugTask中用到,所以就考虑把它放到BugTask类中。namespace LosTechies.DaysOfRefactoring.PushDownField.Before{ public abstract class Task { protected string _resolution; } public class BugTask : Task { } ... 阅读全文
posted @ 2013-02-05 09:50 于为 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的降低方法和前篇的提升方法整好相反,也就是把个别子类使用到的方法从基类移到子类里面去。正文:如下代码所示,Animal类中的方法Bark只有在其子类Dog中使用,所以最好的方案就是把这个方法移到子类Dog中。namespace LosTechies.DaysOfRefactoring.PushDownMethod.Before{ public abstract class Animal { public void Bark() { // code to bark } } public class... 阅读全文
posted @ 2013-02-05 09:49 于为 阅读(140) 评论(0) 推荐(0) 编辑
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 40 下一页