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

  • 相关阅读:
    产生6位的随机码
    用户输入注册的小程序
    进度条的小程序
    文件的相关操作---读写与修改
    字符串分割(C++) 转载
    C++ Stream与编码转换
    wxWidgets界面设计工具DialogBlocks(转载)
    WIN32窗口模板
    WTL对话框应用程序响应键盘消息
    常用网站
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892595.html
Copyright © 2011-2022 走看看