重構改善既有代碼設計--重構手法15:Remove Middle Man (移除中間人)
某個類做了過多的簡單委托動作。讓客戶直接調用受托類。
動機:在Hide Delegate (隱藏委托關系)的“動機”中,談到了“封裝委托對象”的好處。但是這層封裝也是要付出代價的,它的代價是:每當客戶要使用受托類的新特性時,你就必須在服務端添加一個簡單委托函數。隨著委托類的特性(功能)越來越多,這一過程讓你痛苦不已。服務類完全變成了“中間人”,此時你就應該讓客戶直接調用受托類。
很難說什麽程度的隱藏才是合適的。還好,有了Hide Delegate (隱藏委托關系)和Remove Middle Man (移除中間人),你大可不必操心這個問題。因為你可以在系統運行過程中不斷進行調整。隨著系統的變化,“合適的隱藏程度”這個尺度也相應改變。6個月前恰如其分的封裝,現今可能就顯得笨拙。重構的意義在於:你永遠不必說對不起—只要把出問題的地方修補好就行了。
做法:1、建立一個函數,用以獲得受托對象。
2、對於每個受托函數,在服務類中刪除該函數,並讓需要調用該函數的客戶轉為調用受托對象。
3、處理每個受托函數後,編譯、測試。
重構改善既有代碼設計--重構手法15:Remove Middle Man (移除中間人)
相關推薦
重構改善既有代碼設計--重構手法15:Remove Middle Man (移除中間人)
rem pan 編譯 dash 委托 重構 man 服務 ide 某個類做了過多的簡單委托動作。讓客戶直接調用受托類。 動機:在Hide Delegate (隱藏委托關系)的“動機”中,談到了“封裝委托對象”的好處。但是這層
重構改善既有代碼設計--重構手法02:Inline Method (內聯函數)& 03: Inline Temp(內聯臨時變量)
臨時變量 替代 xtra 移動 get replace 16px ber ble Inline Method (內聯函數) 一個函數調用的本體與名稱同樣清楚易懂。在函數調用點插入函數體,然後移除該函數。 int GetRating()
重構改善既有代碼設計--重構手法01:Extract Method (提煉函數)
設置 都是 覆寫 list() 為什麽 新建 細粒度 align 容易 背景: 你有一段代碼可以被組織在一起並獨立出來。將這段代碼放進一個獨立函數,並讓函數名稱解釋該函數的用途。 void PrintOwing(double amount)
重構改善既有代碼設計--重構手法06:Split Temporary Variable (分解臨時變量)
font bsp 責任 獨立 剖析 ron 代碼 一個 變量 你的程序有某個臨時變量被賦值超過一次,它既不是循環變量,也不被用於收集計算結果。針對每次賦值,創造一個獨立、對應的臨時變量 double temp = 2 * (_height + _width); Sy
重構改善既有代碼設計--重構手法07:Remove Assignments to Parameters (移除對參數的賦值)
改善 產生 移除 你在 nal 處理 other 問題 多少 代碼對一個 參數賦值。以一個臨時變量取代該參數的位置。 int Discount(int inputVal, int quantity, int yearTodate) {
重構改善既有代碼設計--重構手法05:Introduce Explaining Variable (引入解釋性變量)
其中 size 語句 臨時變量 變量名 內聯 some ria tro 發現:你有一個復雜的表達式。 解決:將該復雜的表達式(或其中的部分)的結果放進一個臨時變量,並以此變量名稱來解釋表達式用途。 //重構前 if((platform.toUpperC
重構改善既有代碼設計--重構手法18:Self Encapsulate Field (自封裝字段)
擁有 bsp range 設值 測試 void end sub tcap 你直接訪問一個值域(field),但與值域之間的耦合關系逐漸變得笨拙。 為這個值域建立取值/設值函數(getting/setting methods),並且只以這些函數來訪問值域。 priv
重構改善既有代碼設計--重構手法14:Hide Delegate (隱藏委托關系)
nag 其他 耦合 pan manager 容易 -- 暴露 現在 客戶通過一個委托類來調用另一個對象。在服務類上建立客戶所需的所有函數,用以隱藏委托關系。 動機:封裝即使不是對象的最關機特性,也是最關機特性之一。“封裝”意味著每個對象都應該少了解
【讀書筆記】讀《重構 改善既有代碼的設計》有感
表達 感悟 quic -s 根據 bsp 關註 計算 有感 一、書籍介紹 書名:《重構 改善既有代碼的設計》 作者:[美]Martun Fowler 譯者:熊節 出版社:人民郵電出版社 二、背景 深知自己的代碼水平,但自己又有一點代碼潔癖,看不慣的
補交第九周讀書筆記:【讀書筆記(九)】重構-改善既有代碼的設計
會有 更改 作者 設計 維護 span 多人 成本 行為 重構,即推翻重寫。這個名詞相比對大多數程序員來說都不是愉快的。但是這本《重構-改善既有代碼的設計》卻告訴我們,重構有他的必要性。也正如書封面寫的那樣,掌握重構,是普通程序員進階到編程高手必須修煉的秘籍。 為啥要重構
【《重構 改善既有代碼的設計》學習筆記1】重構:第一個案例
作者 mta 而不是 cto 對象 ppm ice tegra 思考 【《重構 改善既有代碼的設計》學習筆記】重構:第一個案例 本篇文章的內容來自《重構 改善既有代碼的設計》一書學習筆記整理筆記並且加上自己的淺顯的思考總結! 一、簡單的例子 一個影片出租店用的程序,計算
重構-改善既有代碼的設計 讀書筆記一
java 方法 變化 show points col total 。。 -a 影片出租店的程序:計算每位顧客的消費金額並打印詳單。操作者告訴程序:顧客租了哪些影片,租期多長。程序根據租賃時間和影片類型計算費用。影片分為3類:普通片,兒童片,新片。除了計算費用還要為常客計算積
重構 改善既有程式碼的設計——重構原則
1.何謂重構? 答: A.重構(名詞意義):對軟體內部結構的調整,目的是在不改變軟體可觀察行為的前提下,提高其理解性,降低其修改成本; B.重構(動詞意義):使用一系列重構手法,在不改變軟體可觀察行為的前提下,調整其結構; 總結:為了更容易理解和修改軟體,在不改變軟體功能的
《重構,改善既有代碼的設計》讀書筆記
捕捉 註意 android中 引入 android項目 xtra 技能 復雜 www 重構,絕對是寫程序過程中最重要的事之一。在寫程序之前我們不可能事先了解所有的需求,設計肯定會有考慮不周的地方,而且隨著項目需求的修改,也有可能原來的設計已經被改得面目全非了。更何況,我們很
《重構——改善既有代碼的設計》【PDF】下載
語句 set 下載 1.3 stat 程序員 經典 獲得 更多 《重構——改善既有代碼的設計》【PDF】下載鏈接: https://u253469.ctfile.com/fs/253469-231196358 編輯推薦 重構,一言以蔽之,就是在不改變外部行
重構_改善既有代碼的設計高清版pdf免費下載
單向 數列 plain 客戶 efi inf 耦合 3.6 亞馬遜 下載地址:網盤下載 備用地址:網盤下載 編輯推薦編輯軟件工程領域的超級經典巨著,與另一巨著《設計模式》並稱"軟工雙雄",全美銷量超過100000冊,亞馬遜書店五星書。在本書中,
重構 改善既有程式碼的設計(要點總結一)
任何一個傻瓜都能寫出計算機能夠理解的程式,唯有寫出人類容易理解的程式,才是優秀的程式設計師。 定義: 對軟體內部結構的一種調整,目的是在不改變軟體可觀察行為的前提下,提高其可理解性,降低其修改成本 目的: 使軟體更容易被理解和修改。 與之形成對比的是效能
重構-改善既有程式碼的設計中文版 pdf下載
縱覽武俠江湖,制勝法門不外兩項,內功和外功。二者得一可天下去得,但最終皆入內外兼修之境倚天是自內而外,先修內功九陽真經,然後以此為基礎,加上太極拳和太極劍,最終成就天下第一高手笑傲是自外而內,先學獨孤九劍,後學吸星大法,最後學易筋經。神鵰也不外如是,玉女心經算是外功,內功則是獨孤求敗之法門。只修內不修外,好比
讀《重構-改善既有程式碼的設計》第二章
第二章:重構原則 何為重構 為何重構 何時重構 重構與設計 重構與效能 何為重構 對軟體內部結構使用重構手法的一種調整,目的是在不改變軟體可觀察行為的前提下,提高其可理解性,降低其修改成本。
《重構--改善既有程式碼的設計》 --MartinFowler
《重構--改善既有程式碼的設計》 --Martin Fowler 重構定義: 在不改變軟體可觀察行為的前提下,對軟體內部進行調整(使用重構手法),以提高其可理解性,降低其修改成本。 -- 重點在兩點: 1. 不改變軟體的可觀察行為。2. 提高其可理解性。 兩個目的:1. 新增新功能。 2.