zoukankan      html  css  js  c++  java
  • 重构之Pull Up Field ,Push Down Field 与Rename(method,class,parameter)笔记

    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 { getset; }
            
    public decimal ClcHrP()
            {
                
    return 0m;
            }
        }
        //修改后更加清晰,一目了然
        
    public class Employee
        {
            
    public string FirstName { getset; }
            
    public decimal CalculateHourPay()
            {
                
    return 0m;
            }
        }
  • 相关阅读:
    aaa
    记一次Vue实战总结
    Data too long for column 'xxx' at row 1MySql.Data.MySqlClient.MySqlPacket ReadPacket() 报错解决
    uni-app 监听返回按钮
    微信H5分享外部链接,缩略图不显示
    uni-app 动态控制下拉刷新
    vueX 的使用
    uni-app H5 腾讯地图无法导航
    uni-app支付功能
    hooks 与 animejs
  • 原文地址:https://www.cnblogs.com/jasenkin/p/1800280.html
Copyright © 2011-2022 走看看