重构第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)的主要内容,如果未能解决你的问题,请参考以下文章
重构改善既有代码设计--重构手法18:Self Encapsulate Field (自封装字段)
电子学第一课:logic family 和 pull-up 等
100天精通Python(数据分析篇)——第67天:Pandas数据连接合并重构(pd.mergepd.concatstackunstack)