移除重複內容

概念:本文中的“移除重複內容”是指把一些很多地方都用到的邏輯提煉出來,然後提供給調用者統一調用。

正文:如下代碼所示,ArchiveRecord和CloseRecord都會用到Archived = true; 和DateArchived = DateTime.Now; 這兩條語句,所以我們就可以對它進行重構。

using System;

namespace LosTechies.DaysOfRefactoring.RemoveDuplication.Before
{
    public class MedicalRecord
    {
        public DateTime DateArchived { get; private set; }
        public bool Archived { get; private set; }

        public void ArchiveRecord()
        {
            Archived = true;
            DateArchived = DateTime.Now;
        }

        public void CloseRecord()
        {
            Archived = true;
            DateArchived = DateTime.Now;
        }
    }
}

重構後的代碼如下所示,我們提煉了SwitchToArchived方法來封裝公用的操作,然後給ArchiveRecord和CloseRecord統一調用。

using System;

namespace LosTechies.DaysOfRefactoring.RemoveDuplication.After
{
    public class MedicalRecord
    {
        public DateTime DateArchived { get; private set; }
        public bool Archived { get; private set; }

        public void ArchiveRecord()
        {
            SwitchToArchived();
        }

        public void CloseRecord()
        {
            SwitchToArchived();
        }

        private void SwitchToArchived()
        {
            Archived = true;
            DateArchived = DateTime.Now;
        }
    }
}

總結:這個重構很簡單,絕大多數程序員都會使用這種重構方法,但有時由於習慣、時間、趕進度等原因而忽略它,所以會使得整個系統雜亂無章,到處都是Ctrl+C和Ctrl+V的痕跡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章