重构之将类内联化(Inline Class)
将类内联化(Inline Class),说到内联化大家还记不记得之前内联函数(Inline Method)这一重构手法,当时只给出了代码。从代码上我们能看出内联函数(Inline Method),就只是把某一个简单的函数放到一个调用他的函数里面。同样的将类内联化(Inline Class),也是把一个简单的类放到另一个类中。其实将类内联化(Inline Class)这一重构手法跟昨天讲的提练类刚好相反;提练类(Extract Class)是因为类中行为(函数)过多,责职过大等才要进行提练,而将类内联化(Inline Class)是因为类中不再承担足够责职、不再有单独存在的理由(大数产生于此前重构移走了类中的函数)。
重构前
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);
}
}
重构后
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);在这里偷个懒就不讲解实现步骤了(能偷懒绝不勤奋{:2_27:})。
至于这一重构手法的好处就在于收拾前面进行重构后的烂摊子,避免出现类爆炸。
参考文献
重构——改善既有代码的设计 【美】Martin Fowler 著
熊节 译
666你的系列教程 我在线下交流会的时候宣传一下 ibcadmin 发表于 2019-3-13 08:54
666你的系列教程 我在线下交流会的时候宣传一下
:o我乱写的 剑弑 发表于 2019-3-13 08:56
我乱写的
不要谦虚~~{:3_48:}
页:
[1]