31 天重構學習筆記16 封裝條件

2021-09-20 23:11:16 字數 1531 閱讀 9373

摘要:由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2023年10月份,由於當時沒有 訂閱

sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門把它標示和整理出來,所以也沒有引起多大的重視。現在突然接手這個重構專案,由於團隊成員技術和經驗參差不齊,所以有必要專門整 理乙個重構的綱要,當然這個系列也非常適合做新系統的**規範參考,只要有**的地方,這個重構規範就很有價值。週末也不想出去閒逛,因為在剛到這個美麗 的城市,沒有親戚或者朋友,所以才能靜下心來兩天時間寫完這個重構參考規範。同時也感受了windows live writer寫文章的快感。當然重構的整體架構得另當別論(整體架構在我的這篇文章有專門的講解(

大的架構設計好了以後,這些重構細節點就成了東風之後的大火,對整個專案也是至關重要。31天重構這個系列和《**大全》、《重構:改善既有**的設計》 比較起來最大的特點就是比較簡單、淺顯易懂。那麼我這些文章也都是學習sean chambers的31天重構的筆記整理,所以如果大家對這個筆記有任何異議也可以指出。

具體也可以通過

查 看原文。

概念:本文中的「封裝條件」是指條件關係比較複雜時,**的可讀性會比較差,所以這時我們應當根據條件表示式是否需要引數將條件表達 式提取成可讀性更好的屬性或者方法,如果條件表示式不需要引數則可以提取成屬性,如果條件表示式需要引數則可以提取成方法。

正文:如下**所示,performcoolfunction裡面的if條件判斷比較複雜,看起來有點雜亂,所以就把它提出來。

using system;

namespace lostechies.daysofrefactoring.encapsulateconditional.before

private string name

private int createdyear

public string performcoolfunction(string buttonpressed)

}}

如下**所示,我們把條件表示式封裝成ha***trafunctions屬性,這樣先前的條件判斷就成了

if (ha***trafunctions) ,所以這樣就在很大程度上提高了可讀性。

using system;

namespace lostechies.daysofrefactoring.encapsulateconditional.after

private string name

private int createdyear

private bool ha***trafunctions

}public string performcoolfunction(string buttonpressed)

}}

總結:這個重構在很大程度上能改善**的可讀性,尤其是在乙個邏輯很複雜的應用中,把這些條件判斷封裝成乙個有意義的名字,這樣很復 雜的邏輯也會立刻變得簡單起來。

31 天重構學習筆記16 封裝條件

摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有 訂閱 sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專...

31 天重構學習筆記1 封裝集合

摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有訂閱 sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門...

C 學習筆記(3) 封裝

封裝是c 物件導向三大特性之一 封裝的意義 1 封裝的意義 2 類在設計時,可以把屬性和行為放在不同的許可權下,加以控制。在c 中,共有三種許可權 公共許可權 public 類內可以訪問 類外可以訪問 保護許可權 protected 類內可以訪問 類外不可以訪問 私有許可權 private 類內可以...