上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 40 下一页
摘要: 概念:本文中的”分解复杂判断”是指把原来复杂的条件判断等语句用尽快返回等方式简化代码。正文:简单的来说,当你的代码中有很深的嵌套条件时,花括号就会在代码中形成一个长长的箭头。我们经常在不同的代码中看到这种情况,并且这种情况也会扰乱代码的可读性。如下代码所示,HasAccess方法里面包含一些嵌套条件,如果再加一些条件或者增加复杂度,那么代码就很可能出现几个问题:1,可读性差。 2,很容易出现异常。 3,性能较差。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 阅读全文
posted @ 2013-02-05 10:08 于为 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“引入参数对象”是指当一个方法的参数过多或者过为复杂时,可以考虑把这些参数封装成一个单独的类。正文:如果一个方法所需要的参数大于5个,理解该方法的签名就变得比较困难,因为这样感觉参数很长、样式不好并且没有分类,所以我们有必要把参数进行封装。namespace LosTechies.DaysOfRefactoring.SampleCode.ParameterObject.Before{ public class Registration { public void Create(decimal amount, Student student, IEnume... 阅读全文
posted @ 2013-02-05 10:07 于为 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的”分解方法”是指把我们所做的这个功能不停的分解方法,直到将一个大方法分解为名字有意义且可读性更好的若干个小方法。正文:如下代码所示,因为现实中AcceptPayment方法不会做这么多的事情。,所以我们通过几次分解将 AcceptPayment拆分成若干个名字有意义且可读性更好的小方法。using System.Collections.Generic;using System.Linq;namespace LosTechies.DaysOfRefactoring.SampleCode.BreakMethod.Before{ public class CashRegister... 阅读全文
posted @ 2013-02-05 10:06 于为 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的”合并继承”是指如果子类的属性和方法也适合于基类,那么就可以移除子类,从而减少依赖关系。正文:上一篇我们讲到“提取子类”重构是指当基类中的一个责任不被所有的子类所需要时,将这些责任提取到合适的子类中。而我们今天所要讲的的“合并继承”重构一般用在当我们觉得不需要子类的时候。如下代码所示,StudentWebSite子类除了有一个属性用来说明网站是否是活动的外没有别的责任,在这种情形下我们意识到IsActive属性可以应用到所有的网站,所以我们可以将IsActive属性上移到基类中,并去掉StudentWebSite类。using System.Collections.Generic 阅读全文
posted @ 2013-02-05 10:05 于为 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的”提取子类”是指把基类中的一些不是所有子类都需要访问的方法调整到子类中。正文:当你的基类中存在一些方法不是所有的子类都需要访问,你想将它们调整到子类中时,这个重构会变得很有用了。如下代码所示,我们需要一个 Registration类用来处理学生选课的信息。但是当Registration类开始工作后,我们意识到我们会在两种不同的上下文中使用Registration类,NonRegistrationAction和Notes只有在我们处理未注册情况下才用到。所以我们将NonRegistration和Notes提到单独的NonRegistration类中。using System;nam 阅读全文
posted @ 2013-02-05 10:04 于为 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“提取工厂类”是指如果要创建的对象很多,则代码会变的很复杂。一种很好的方法就是提取工厂类。正文:一般来说我们需要在代码中设置一些对象,以便获得它们的状态,从而使用对象,所谓的设置通常来说就是创建对象的实例并调用对象的方法。有时如果要创建的对象很多,则代码会变的很复杂。这便是工厂模式发挥作用的情形。工厂模式的复杂应用是使用抽象工厂创建对象集,但我们在这里只是使用基本的工厂类创建对象的一个简单应用。如下代码所示,New方法包含创建类的整个逻辑,如果现在要创建的类比较多而且逻辑比较复杂的话(如根据不同条件创建对象,什么时候创建对象),我们的New方法逻辑会变得很大,同时代码也变得很难维 阅读全文
posted @ 2013-02-05 10:03 于为 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“使用条件判断代替异常”是指把没有必要使用异常做判断的条件尽量改为条件判断。正文:如下代码所示,在日常的编码中我们经常需要用到异常来控制程序流,Start方法里面用trycatch做条件判断,我们知道这里没有必要使用这种方式,因为你不需要做类型不可控的类型转换,也不需要处理异常行为,所以我们应该对它进行重构。namespace LosTechies.DaysOfRefactoring.ReplaceException.Before{ public class Microwave { private IMicrowaveMotor Motor { get;... 阅读全文
posted @ 2013-02-05 10:02 于为 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“提取父类”是指类中有一些字段或方法,你想把它们提取到父类中以便同一继承层次的其它类也可以访问他们,这个和之前的很多重构有异曲同工之处。正文:Dog类中的EatFood和Groom有可能被其他类用到,因为他们都是动物的一些公有性质,所以这个时候我们就会考虑对它进行提炼。namespace LosTechies.DaysOfRefactoring.ExtractSuperclass.Before{ public class Dog { public void EatFood() { // eat some food ... 阅读全文
posted @ 2013-02-05 10:01 于为 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“封装条件”是指条件关系比较复杂时,代码的可读性会比较差,所以这时我们应当根据条件表达式是否需要参数将条件表达式提取成可读性更好的属性或者方法,如果条件表达式不需要参数则可以提取成属性,如果条件表达式需要参数则可以提取成方法。正文:如下代码所示,PerformCoolFunction里面的if条件判断比较复杂,看起来有点杂乱,所以就把它提出来。using System;namespace LosTechies.DaysOfRefactoring.EncapsulateConditional.Before{ public class RemoteControl { ... 阅读全文
posted @ 2013-02-05 10:00 于为 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 概念:本文中的“移除重复内容”是指把一些很多地方都用到的逻辑提炼出来,然后提供给调用者统一调用。正文:如下代码所示,ArchiveRecord和CloseRecord都会用到Archived =true; 和DateArchived =DateTime.Now; 这两条语句,所以我们就可以对它进行重构。using System;namespace LosTechies.DaysOfRefactoring.RemoveDuplication.Before{ public class MedicalRecord { public DateTime DateArchived... 阅读全文
posted @ 2013-02-05 09:59 于为 阅读(169) 评论(0) 推荐(0) 编辑
上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 40 下一页