zoukankan      html  css  js  c++  java
  • 31天重构学习笔记5. 提升字段

    概念:本文中的提升字段和前面的提升方法颇为相似,就是把子类公用的字段提升到基类中,从而达到公用的目的。

    正文:如下代码所示, Account 的两个子类CheckingAccount SavingsAccount 都有minimumCheckingBalance 字段,所以可以考虑把这个字段提到基类中。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace LosTechies.DaysOfRefactoring.PullUpField.Before
    {
    public abstract class Account
    {
    }

    public class CheckingAccount : Account
    {
    private decimal _minimumCheckingBalance = 5m;
    }

    public class SavingsAccount : Account
    {
    private decimal _minimumSavingsBalance = 5m;
    }
    }

    重构后的代码如下,这样提的前提是这些子类有一个基类或者有很多相似的字段和方法,不然为了一个字段而单独建立一个抽象类是不可取的,所以这个就需要具体权衡。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace LosTechies.DaysOfRefactoring.PullUpField.After
    {
    public abstract class Account
    {
    protected decimal _minimumBalance = 5m;
    }

    public class CheckingAccount : Account
    {
    }

    public class SavingsAccount : Account
    {
    }
    }

    总结:这个重构的策略比较简单,同时也是比较常用的一些做法,最主要就是要注意权衡是否真的有这个必要,看这样做究竟有没有什么好处(比如只需要改一个地方,维护简便了,同时代码量也更少了等)。

  • 相关阅读:
    AGC023C Painting Machines
    LG3834 可持久化线段树1
    又是一天
    ARC103F Distance Sums
    CF1053E Euler tour
    UOJ22 外星人
    洛谷4248 AHOI2013差异 (后缀数组SA+单调栈)
    洛谷2408不同字串个数/SPOJ 694/705 (后缀数组SA)
    CF49E Common ancestor(dp+dp+dp)
    洛谷4051 JSOI2007 字符加密(SA)
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892570.html
Copyright © 2011-2022 走看看