将类内联化(Inline Class),说到内联化大家还记不记得之前内联函数(Inline Method)这一重构手法,当时只给出了代码。从代码上我们能看出内联函数(Inline Method),就只是把某一个简单的函数放到一个调用他的函数里面。同样的将类内联化(Inline Class),也是把一个简单的类放到另一个类中。
其实将类内联化(Inline Class)这一重构手法跟昨天讲的提练类刚好相反;提练类(Extract Class)是因为类中行为(函数)过多,责职过大等才要进行提练,而将类内联化(Inline Class)是因为类中不再承担足够责职、不再有单独存在的理由(大数产生于此前重构移走了类中的函数)。
重构前
[C#] 纯文本查看 复制代码 class Person
{
private TelephoneNumber _officeTelephone = new TelephoneNumber();
private string _name;
public string Name { get; set; }
public string getTelephoneNumber()
{
return string.Format("({0}){1}", _officeTelephone.OfficeAreaCode, _officeTelephone.OfficeNumber);
}
}
class TelephoneNumber
{
private string _officeAreaCode;
private string _officeNumber;
public string OfficeAreaCode { get; set; }
public string OfficeNumber { get; set; }
public string getTelephoneNumber()
{
return string.Format("({0}{1})", _officeAreaCode, _officeNumber);
}
}
重构后
[C#] 纯文本查看 复制代码
class Person
{
private string _name;
private string _officeAreaCode;
private string _officeNumber;
public string Name { get; set; }
public string OfficeAreaCode { get; set; }
public string OfficeNumber { get; set; }
public string getTelephoneNumber()
{
return string.Format("({0}){1}",_officeAreaCode ,_officeNumber);
}
}
聪明的你看到上面的代码就能明白,怎样进行将类内联化(Inline Class);在这里偷个懒就不讲解实现步骤了(能偷懒绝不勤奋)。
至于这一重构手法的好处就在于收拾前面进行重构后的烂摊子,避免出现类爆炸。
参考文献
重构——改善既有代码的设计 【美】Martin Fowler 著
熊节 译
|