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, AccountInterestaccountInterest)
{
AccountAge = accountAge;
CreditScore = creditScore;
AccountInterest = accountInterest;
}
public int AccountAge { get; private set; }
public int CreditScore { get; private set; }
public AccountInterest AccountInterest { get; private set; }
}
}总结:这个重构法则在很多时候能让我们把代码组织的结构调整得更合理,同时也能给以后的维护带来方便。
作者:圣殿骑士
补充:综合编程 , 其他综合 ,