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的痕迹。

  • 相关阅读:
    关于Monitor和lock的锁操作 笔记
    模型/数据验证(System.ComponentModel.DataAnnotations)笔记
    NSIS 打包操作
    关于IE和非IE浏览器的一些差异笔记
    Wpf 字典触发器
    关于MongoDB在C#的使用
    Apache JMeter
    关于在移动端方面的css应用
    关于csc.exe
    增量运算符+=和*=的原理与不可变序列增量运算效率低的原因
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892595.html
Copyright © 2011-2022 走看看