将类内联化(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 著  
                                                                         熊节 译 
 
 
 |