重构第5天:提升字段(Pull Up Field)

Posted IT少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重构第5天:提升字段(Pull Up Field)相关的知识,希望对你有一定的参考价值。

理解:提升字段和前面讲解的方法提公很类似,可以说方式都是一样的。就是把继承类中经常用到的字段,提出来 放到基类中,达到通用的目的。提高代码重用性和可维护性。

详解:如下重构前的代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace _31DaysRefactor
 7 {
 8 
 9     public abstract class Account
10     {
11 
12     }
13 
14     public class CheckingAccount : Account
15     {
16         private decimal _minimumCheckingBalance = 5m;
17     }
18 
19     public class SavingsAccount : Account
20     {
21 
22         private decimal _minimumCheckingBalance = 5m;
23     }
24 }

从代码乐意看出,Account类的继承类CheckingAccount和SavingsAccount都有一个相同的字段_minimumCheckingBalance ,为了提高易用性和可维护性,我们把_minimumCheckingBalance 字段提出来放到基类Account中去。

重构后的代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace _31DaysRefactor
 7 {
 8 
 9     public abstract class Account
10     {
11         protected decimal _minimumCheckingBalance = 5m;
12     }
13 
14     public class CheckingAccount : Account
15     {
16         
17     }
18 
19     public class SavingsAccount : Account
20     {
21 
22         
23     }
24 }

注意提到公共基类中,最好用 protected 关键字来修饰,表示只能被自身和子类使用。重构其实就这么简单。

以上是关于重构第5天:提升字段(Pull Up Field)的主要内容,如果未能解决你的问题,请参考以下文章

6处理概括关系

6处理概括关系

重构改善既有代码设计--重构手法18:Self Encapsulate Field (自封装字段)

电子学第一课:logic family 和 pull-up 等

重构第9天:提取接口(Extract Interface)

100天精通Python(数据分析篇)——第67天:Pandas数据连接合并重构(pd.mergepd.concatstackunstack)