摘要:由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2023年10月份,由於當時沒有 訂閱
sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門把它標示和整理出來,所以也沒有引起多大的重視。現在突然接手這個重構專案,由於團隊成員技術和經驗參差不齊,所以有必要專門整 理乙個重構的綱要,當然這個系列也非常適合做新系統的**規範參考,只要有**的地方,這個重構規範就很有價值。週末也不想出去閒逛,因為在剛到這個美麗 的城市,沒有親戚或者朋友,所以才能靜下心來兩天時間寫完這個重構參考規範。同時也感受了windows live writer寫文章的快感。當然重構的整體架構得另當別論(整體架構在我的這篇文章有專門的講解(
大的架構設計好了以後,這些重構細節點就成了東風之後的大火,對整個專案也是至關重要。31天重構這個系列和《**大全》、《重構:改善既有**的設計》 比較起來最大的特點就是比較簡單、淺顯易懂。那麼我這些文章也都是學習sean chambers的31天重構的筆記整理,所以如果大家對這個筆記有任何異議也可以指出。
具體也可以通過
查 看原文。
概念:本文中的「提取方法物件」是指當你發現乙個方法中存在過多的區域性變數時,你可以通過使用「提取方法物件」重構來引入一些方法, 每個方法完成任務的乙個步驟,這樣可以使得程式變得更具有可讀性。
正文:如下**所示,
order 類 中的calculate方法要完成很多功能,在之前我們用「提取方法」來進行重構,現在我們採取「提取方法物件」來完成重構。
using system.collections.generic;namespace lostechies.daysofrefactoring.extractmethodobject.before
}public class
order
private
ilist
discounts
private decimal tax
public decimal calculate()
// subtract discounts
foreach (decimal discount in discounts)
subtotal -= discount;
// calculate tax
decimal tax = subtotal * tax;
// calculate grandtotal
decimal grandtotal = subtotal + tax;
return grandtotal;}}
}
正如下**所示,我們引入了ordercalculator類,該類實現了所有的計算方法,order類將自身傳遞給 ordercalculator類並呼叫calculate方法完成計算過程。
using system.collections.generic;namespace lostechies.daysofrefactoring.extractmethodobject.after
}public class
order
public
ienumerable
discounts
public decimal tax
public decimal calculate()
}public class
ordercalculator
private
ienumerable
orderlineitems
private
ienumerable
discounts
private decimal tax
public ordercalculator(order order)
public decimal calculate()
private void calculatesubtotal()
private void subtractdiscounts()
private void calculatetax()
}}
總結:本文的重構方法在有的時候還是比較有用,但這樣會造成欄位的增加,同時也會帶來一些維護的不便,它和「提取方法」最大的區別就 是乙個通過方法返回需要的資料,另乙個則是通過欄位來儲存方法的結果值,所以在很大程度上我們都會選擇「提取方法」。
31 天重構學習筆記10 提取方法
摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有訂閱 sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門...
31 天重構學習筆記10 提取方法
摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有訂閱 sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門...
31 天重構學習筆記10 提取方法
摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有訂閱 sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門...