马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

重构之将类内联化(Inline Class)

  [复制链接]
查看3233 | 回复6 | 2019-3-12 23:00:21 | 显示全部楼层 |阅读模式
         将类内联化(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 著
                                                                         熊节 译


ibcadmin | 2019-3-13 08:54:17 | 显示全部楼层
666  你的系列教程 我在线下交流会的时候宣传一下
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
剑弑 | 2019-3-13 08:56:22 | 显示全部楼层
ibcadmin 发表于 2019-3-13 08:54
666  你的系列教程 我在线下交流会的时候宣传一下

我乱写的
ibcadmin | 2019-3-14 09:39:47 | 显示全部楼层

不要谦虚~~
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则