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

  • 相关阅读:
    如何实线浏览器title的小图标以及rgb和rgbaopacity的区别
    雪碧图
    定位的使用及页面的布局
    标准文档流及浮动的元素和坏处
    三种列表以及行级块三种元素的转变
    背景的处理
    h5前期js知识点10月19日总结
    h5前期jg知识点总结10月18日
    h5前期js10月17日知识点
    h5前期js知识点10月16日总结
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892595.html
Copyright © 2011-2022 走看看