重构之Pull Up Field ,Push Down Field 与Rename(method,class,parameter)笔记
2010-08-15 23:27
309 查看
Pull Up Field
两个子类中包含重复的常量,为了提高复用性将字段上移到基类中。
public abstract class Account
{
}
public class CheckAccount : Account
{
private decimal _minCheckBalance = 5m;
}
public class SaveAccount : Account
{
private decimal _minSaveBalance = 5m;
}
提高复用性,如下
public abstract class Account
{
//protected 该类以及子类有特有的
protected decimal _minCheckBalance = 5m;
}
public class CheckAccount : Account
{
}
public class SaveAccount : Account
{
}
Push Down Field
基类中的一个字符串字段只被一个子类使用,因此可以进行下移。只要没有其他子类使用基类的字段时,就应该立即执行该重构。
public abstract class Task
{
protected string _resolution;
}
public class BugTask : Task
{
}
public class FeatureTask : Task
{
}
修改后
public abstract class Task
{
}
public class BugTask : Task
{
//为BuugTask特有
private string _resolution;
}
public class FeatureTask : Task
{
}
Rename(method,class,parameter)
这个重构只需将名称修改得更具描述性、更容易传达其含义即可。
代码
public class Emp
{
public string FN { get; set; }
public decimal ClcHrP()
{
return 0m;
}
}
//修改后更加清晰,一目了然
public class Employee
{
public string FirstName { get; set; }
public decimal CalculateHourPay()
{
return 0m;
}
}
两个子类中包含重复的常量,为了提高复用性将字段上移到基类中。
public abstract class Account
{
}
public class CheckAccount : Account
{
private decimal _minCheckBalance = 5m;
}
public class SaveAccount : Account
{
private decimal _minSaveBalance = 5m;
}
提高复用性,如下
public abstract class Account
{
//protected 该类以及子类有特有的
protected decimal _minCheckBalance = 5m;
}
public class CheckAccount : Account
{
}
public class SaveAccount : Account
{
}
Push Down Field
基类中的一个字符串字段只被一个子类使用,因此可以进行下移。只要没有其他子类使用基类的字段时,就应该立即执行该重构。
public abstract class Task
{
protected string _resolution;
}
public class BugTask : Task
{
}
public class FeatureTask : Task
{
}
修改后
public abstract class Task
{
}
public class BugTask : Task
{
//为BuugTask特有
private string _resolution;
}
public class FeatureTask : Task
{
}
Rename(method,class,parameter)
这个重构只需将名称修改得更具描述性、更容易传达其含义即可。
代码
public class Emp
{
public string FN { get; set; }
public decimal ClcHrP()
{
return 0m;
}
}
//修改后更加清晰,一目了然
public class Employee
{
public string FirstName { get; set; }
public decimal CalculateHourPay()
{
return 0m;
}
}
相关文章推荐
- 重构之Pull up Method 与Push Down Method
- 重构之Pull up Method 与Push Down Method
- Refactoring--Pull Up /Push Down Method or Field
- 重构7-Rename(method,class,parameter)
- 重构第3天:方法提公(Pull Up Method)
- 步步为营 .NET 代码重构学习笔记 六、移动函数和移动值域(Move Method And Move Field)
- 重构手法60:push down Method (函数下移)
- 重构手法61:push down field (字段下移)
- 步步为营 .NET 代码重构学习笔记 五、移动函数和移动值域(Move Method And Move Field)
- 重构第5天:提升字段(Pull Up Field)
- 重构手法57:Pull Up Field (字段上移)
- 重构3-Pull Up Method(方法上移)
- 重构手法58:Pull Up Method (方法上移)
- 重构4-Push Down Method(方法下移)
- 读书笔记-重构-Pull Up Field(把属性移入父类)
- 重构5-Pull Up Field(字段上移)
- 点滴 PUSH-PULL AND OPEN DRAIN+PULL-UP/DOWN
- 重构第6天:降低字段(Push Down Field)
- 重构6-Push Down Field(字段下移)
- Refactoring Day 7 : Rename (method, class, parameter)