重构: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;
        }
    }
复制代码

 

 

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

 

 

 

posted @   jasen.kin  阅读(416)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示