当前位置:编程学习 > 网站相关 >>

31天重构学习笔记2. 移动方法

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

 

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

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

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

作者:圣殿骑士

补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,