重构:Move Method 笔记

重构:Move Method

           Move Method就是将方法迁移到合适的位置。

           条件:当一个方法被其他类使用比在它所在类中的使用还要频繁时,我们就需要将方法迁移到更频繁地使用它的类中(Move Method重构)

           范例如下:

修改前代码
  public class BankAccount
    {
        
public BankAccount(int accountNum)
        {
            AccountNum 
= accountNum;
        }
        
public int AccountNum { getprivate set; }
      
  public double CalculateInterestRate()
        {
            
if (AccountNum > 800)
                
return 0.02;
            
if (AccountNum > 10&&AccountNum<=800)
                
return 0.03;
            
return 0.05;
        }
    }

    
public class AccountInterest
    {
        
public BankAccount Account { getprivate set; }
        
public AccountInterest(BankAccount account)
        {
            Account 
= account;
        }
        
public double InterestRate
        {
            
get { return Account.CalculateInterestRate(); }

        }
        
public bool IntroductoryRate
        {
            
get { return Account.CalculateInterestRate() < 0.05; }
        }

    }

      发现后者比前者使用标注中的方法的频率更高,因此将该方法移动至后者中。 

      修改后代码:

修改后代码
    public class BankAccount
    {
        
public BankAccount(int accountNum)
        {
            AccountNum 
= accountNum;     
        }
        
public int AccountNum { getprivate set; }
    }
    
public class AccountInterest
    {
        
public BankAccount Account { getprivate set; }
        
public AccountInterest(BankAccount account)
        {
            Account 
= account;
        }
        public double InterestRate
        {
            
get { return CalculateInterestRate(); }
        }
        
public bool IntroductoryRate
        {
            
get { return CalculateInterestRate() < 0.05; }
        }
        
public double CalculateInterestRate()
        {
            
if (Account.AccountNum > 800)
                
return 0.02;
            
if (Account.AccountNum > 10 && Account.AccountNum <= 800)
                
return 0.03;
            
return 0.05;
        }
    }

      代码操作更加清晰,直观。功能单一化。

原文地址:https://www.cnblogs.com/jasenkin/p/1799382.html