zoukankan      html  css  js  c++  java
  • 31天重构学习笔记15. 移除重复内容

    概念:本文中的“移除重复内容”是指把一些很多地方都用到的逻辑提炼出来,然后提供给调用者统一调用。

    正文:如下代码所示,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的痕迹。

  • 相关阅读:
    异常处理
    PAT——1048. 数字加密
    PAT——1047. 编程团体赛
    PAT——1046. 划拳
    PAT——1045. 快速排序(25)
    PAT——1044. 火星数字
    PAT——1043. 输出PATest
    PAT——1042. 字符统计
    PAT——1041. 考试座位号
    PAT——1040. 有几个PAT
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892595.html
Copyright © 2011-2022 走看看