31 天重构学习笔记5. 提升字段
生活随笔
收集整理的這篇文章主要介紹了
31 天重构学习笔记5. 提升字段
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
摘要:由于最近在做重構(gòu)的項(xiàng)目,所以對重構(gòu)又重新進(jìn)行了一遍學(xué)習(xí)和整理,對31天重構(gòu)最早接觸是在2009年10月份,由于當(dāng)時沒有訂閱Sean Chambers的blog,所以是在國外的社區(qū)上閑逛的時候鏈接過去的。記得當(dāng)時一口氣看完了整個系列并沒有多少感覺,因?yàn)檫@些基本上項(xiàng)目都 在使用,只是我們沒有專門把它標(biāo)示和整理出來,所以也沒有引起多大的重視。現(xiàn)在突然接手這個重構(gòu)項(xiàng)目,由于團(tuán)隊(duì)成員技術(shù)和經(jīng)驗(yàn)參差不齊,所以有必要專門整 理一個重構(gòu)的綱要,當(dāng)然這個系列也非常適合做新系統(tǒng)的代碼規(guī)范參考,只要有代碼的地方,這個重構(gòu)規(guī)范就很有價(jià)值。周末也不想出去閑逛,因?yàn)樵趧偟竭@個美麗 的城市,沒有親戚或者朋友,所以就才能靜下心來兩天時間寫完這個重構(gòu)參考規(guī)范。同時也感受了Windows Live writer寫文章的快感。當(dāng)然重構(gòu)的整體的架構(gòu)得另當(dāng)別論(整體架構(gòu)在我的這篇文章有專門的講解(http://www.cnblogs.com/zenghongliang/archive/2010/06/23/1763438.html)。 大的架構(gòu)設(shè)計(jì)好了以后,這些重構(gòu)小點(diǎn)就成了點(diǎn)將之后的大軍作戰(zhàn)了,所以這些重構(gòu)小點(diǎn)對整個項(xiàng)目也是至關(guān)重要。31天重構(gòu)這個系列和《代碼大全》、《重構(gòu): 改善既有代碼的設(shè)計(jì)》比較起來最大的特點(diǎn)就是比較簡單、淺顯易懂。那么我這些文章也都是學(xué)習(xí)Sean Chambers的31天重構(gòu)的筆記整理,所以如果大家對這個筆記有任何異議也可以指出,具體也可以通過http://www.lostechies.com/blogs/sean_chambers/archive/2009/07/31/31-days-of-refactoring.aspx查 看原文。 概念:本文中的提升字段和前面的提升方法頗為相似,就是把子類公用的字段提升到基類中,從而達(dá)到公用的目 的。 正文:如下代碼所示, 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;
}
} 重構(gòu)后的代碼如下,這樣提的前提是這些子類有一個基類或者有很多相似的字段和方法,不然為了一個字段而單獨(dú)建立一個抽象類是不可取的,所以這個就需 要具體權(quán)衡。 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
{
}
} 總結(jié):這個重構(gòu)的策略比較簡單,同時也是比較常用的一些做法,最主要就是要注意權(quán)衡是否真的有這個必要,看這樣做究竟有沒有什么好處(比如只需要改 一個地方,維護(hù)簡便了,同時代碼量也更少了等)。
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;
}
} 重構(gòu)后的代碼如下,這樣提的前提是這些子類有一個基類或者有很多相似的字段和方法,不然為了一個字段而單獨(dú)建立一個抽象類是不可取的,所以這個就需 要具體權(quán)衡。 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
{
}
} 總結(jié):這個重構(gòu)的策略比較簡單,同時也是比較常用的一些做法,最主要就是要注意權(quán)衡是否真的有這個必要,看這樣做究竟有沒有什么好處(比如只需要改 一個地方,維護(hù)簡便了,同時代碼量也更少了等)。
轉(zhuǎn)載于:https://blog.51cto.com/knightswarrior/340468
總結(jié)
以上是生活随笔為你收集整理的31 天重构学习笔记5. 提升字段的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 独角兽公司是指什么 盘点国内独角兽公司
- 下一篇: 运维人员应该掌握哪些常用技术