剑弑 发表于 2019-3-12 23:00:21

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


ibcadmin 发表于 2019-3-13 08:54:17

666你的系列教程 我在线下交流会的时候宣传一下

剑弑 发表于 2019-3-13 08:56:22

ibcadmin 发表于 2019-3-13 08:54
666你的系列教程 我在线下交流会的时候宣传一下

:o我乱写的

ibcadmin 发表于 2019-3-14 09:39:47

剑弑 发表于 2019-3-13 08:56
我乱写的

不要谦虚~~{:3_48:}
页: [1]
查看完整版本: 重构之将类内联化(Inline Class)