zoukankan      html  css  js  c++  java
  • 重构: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;
            }
        }

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

  • 相关阅读:
    php的cURL库介绍
    php函数ob_start()、ob_end_clean()、ob_get_contents()
    php中curl、fsockopen的应用
    App架构设计经验谈:服务端接口的设计
    图解正向代理与反向代理
    三种数据库连接池的配置
    数据库连接池在Tomcat中的几种配置方法
    Java四种线程池的使用
    JVM调优总结(一)-- 一些概念
    JVM调优总结(十)-调优方法
  • 原文地址:https://www.cnblogs.com/jasenkin/p/1799382.html
Copyright © 2011-2022 走看看