理解:移除重复的代码,顾名思义就是把多处重复的代码搬移到一个公共的地方,来减少代码量,提高代码可维护性。
详解:看下面的例子就很容易理解
重构前code
1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 7 namespace ReflectorDemo 8 { 9 public class MedicalRecord 10 { 11 public DateTime DateArchived { get; private set; } 12 public bool Archived { get; private set; } 13 14 public void ArchiveRecord() 15 { 16 Archived = true; 17 DateArchived = DateTime.Now; 18 } 19 20 public void CloseRecord() 21 { 22 Archived = true; 23 DateArchived = DateTime.Now; 24 } 25 } 26 }
可以看到 Actived=true,DateArchived=DateTime.Now 在两个方法中都要用到,我们就可以把这连个字段提取出来,放到一个新方法中。
重构后code
1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 7 namespace ReflectorDemo 8 { 9 public class MedicalRecord 10 { 11 public DateTime DateArchived { get; private set; } 12 public bool Archived { get; private set; } 13 14 public void ArchiveRecord() 15 { 16 SwitchToArchived(); 17 } 18 19 public void CloseRecord() 20 { 21 SwitchToArchived(); 22 } 23 24 private void SwitchToArchived() 25 { 26 Archived = true; 27 DateArchived = DateTime.Now; 28 } 29 } 30 }
这个重构很简单,绝大多数程序员都会使用这种重构方法。