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;
            }
        }

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

  • 相关阅读:
    在MAC OS X系统上面安装mysql
    在项目中使用DSOFramer需要注意的一些地方
    记一次python安装PIL库所遇到的事
    Calendar.compareTo 比较时间的大小
    String 时间类型怎么进行比较大小?
    ElasticSearch--二、基本语法(创建索引,查询数据)
    ElasticSearch--一、使用场景以及对应软件配置安装
    Linux下nginx反向代理负载均衡几种方式以及配置
    node环境使用lowdb轻量数据库以及基本用法
    jQuery 日常笔记
  • 原文地址:https://www.cnblogs.com/jasenkin/p/1799382.html
Copyright © 2011-2022 走看看