代码中有很多try...catch的语句,用来处理异常

但是不应该用异常来控制程序流程,异常只应该用来完成本职工作即处理异常的情况

而不是用来控制流程

这个重构就是讲的这个,

旧的代码:

    public class Microwave
     {
        private IMicrowaveMotor Motor { get; set; }
    &n

今天的重构其实和 第3天:上移方法 非常相似

也就是把一些常用的方法放在一个基类里,这样其它类可以直接调用该方法,而不用重新实现或者引用

其实我各人感觉两者是一样的意思,呵呵

旧的代码:

    public class Dog
     {
        public void EatFood()
&

今天这个重构比较不错,将代码中充斥的N多判断条件提取成为一个属性,可以实现复用,并且使得结构清晰

旧的代码:

    public class RemoteControl
     {
        private string[] Functions { get; set; }
        <

这个重构应该是最常见的,并且在我们开发中就应该注意避免,也就是copy代码,相同的代码内容在项目不同的地方出现多次,确实应该消除。下次如果要Copy代码的时候抽取出来一个公共的方法来调用吧

例子很简单,就不多说了,直接上代码

旧代码

    public class MedicalRecord
     {
        public DateTime DateArchived { …

Break Responsibilities,想了半天,改为拆分职责

今天这个重构主要是讲的单一职责方面的 ,旧代码如下

    public class Video
     {
        public void PayFee(decimal fee)
         {
       

ICloneable接口

默认 2010-01-21 14:11

ICloneable 接口包含一个成员 Clone,它用于支持除 MemberwiseClone 所提供的克隆之外的克隆。

实现接口:

    public class AddressInfo : ICloneable
     {
        public AddressInfo(string userName, string phone)
         {
            this.UserName = userName;
            this.Phone = ph

这个重构建议是对第10天:提取方法的继续

我们在一个类中提取出来了大量的私有方法和变量,会造成这个类臃肿不堪,难以阅读

因此最好提取出来方法对象,用以将功能的一个个逻辑分离开

旧的代码:

    public class OrderInfo
     {
        public decimal Price { get; private

今天的重构我觉得没有太大用处

旧的代码

    public class AnimalFeedingService
     {
        private bool FoodBowlEmpty { get; set; }
        

今天的重构很有意思,旧的代码是根据参数State来调用三个不同的方法,获取三个地方的装运量

代码如下:

    public class ClientCode
     {
        public decimal CalculateShipping()
         {
             Shipp

这一条重构的建议是尽量提取方法,使得代码更加清晰明了

旧的代码:

    public class Receipt
     {
        private IList<decimal> Discounts { get; set; }