zoukankan      html  css  js  c++  java
  • 移动方法

    概念:本文所讲的移动方法就是方法放在合适的位置(通常指放在合适的类中)。

     

    正文:移动方法是一个非常easy也非经常见的重构。仅仅要是系统就会存在非常多类,那么类里面包含非常多方法,假设一个方法经常被另外一个类使用(比本身的类使用还多)或者这种方法本身就不应该放在这个类里面,那么这个适合应该考虑把它移到合适的类中。代码例如以下:

    namespace LosTechies.DaysOfRefactoring.MoveMethod.Before
    {
        public class BankAccount
        {
            public BankAccount(int accountAge, int creditScore, AccountInterest accountInterest)
            {
                AccountAge = accountAge;
                CreditScore = creditScore;
                AccountInterest = accountInterest;
            }

     

    public int AccountAge { get; private set; } public int CreditScore { get; private set; } public AccountInterest AccountInterest { get; private set; }

    public double CalculateInterestRate() { if (CreditScore > 800) return 0.02;

    if (AccountAge > 10) return 0.03;

    return 0.05; } }

    public class AccountInterest { public BankAccount Account { get; private set; }

    public AccountInterest(BankAccount account) { Account = account; }

    public double InterestRate { get { return Account.CalculateInterestRate(); } }

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

    移动以后大家能够看到BankAccount类的职责也单一。同一时候CalculateInterestRate也放到了常常使用且适合它的类中了。所以此重构是一个比較好的重构,能让整个代码变得更加合理。

    namespace LosTechies.DaysOfRefactoring.MoveMethod.After
    {
        public class AccountInterest
        {
            public BankAccount Account { get; private 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.CreditScore > 800)
                    return 0.02;
    
                if (Account.AccountAge > 10)
                    return 0.03;
    
                return 0.05;
            }
        }
    }

    namespace LosTechies.DaysOfRefactoring.MoveMethod.After
    {
        public class BankAccount
        {
            public BankAccount(int accountAge, int creditScore, AccountInterest accountInterest)
            {
                AccountAge = accountAge;
                CreditScore = creditScore;
                AccountInterest = accountInterest;
            }
    
            public int AccountAge { get; private set; }
            public int CreditScore { get; private set; }
            public AccountInterest AccountInterest { get; private set; }
        }
    }

    总结:这个重构法则在非常多时候能让我们把代码组织的结构调整得更合理,同一时候也能给以后的维护带来方便。

  • 相关阅读:
    IE浏览器下常见的CSS兼容问题
    Android studio 使用问题汇总
    IOS中的属性列表----Property List
    自定义组件-BreadcrumbTreeView 的使用
    IOS开发之数据sqlite使用
    深入分析动态管理Fragment
    IOS开发中多线程的使用
    Java中导入、导出Excel
    IOS数据持久化之归档NSKeyedArchiver
    Bugfree3.0.4 Linux环境安装指南
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6708891.html
Copyright © 2011-2022 走看看