1. 程式人生 > >《重構——改善既有程式碼的設計》【PDF】

《重構——改善既有程式碼的設計》【PDF】

編輯推薦

重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善程式碼。多年前,正是《重構:改善既有程式碼的設計》原版的出版,使重構終於從程式設計高手們的小圈子走出,成為眾多普通程式設計師日常開發工作中不可或缺的一部分。《重構:改善既有程式碼的設計》也因此成為與《設計模式》齊名的經典著作,被譯為中、德、俄、日等眾多語言,在世界範圍內暢銷不衰。

《重構:改善既有程式碼的設計》凝聚了軟體開發社群專家多年摸索而獲得的寶貴經驗,擁有不因時光流逝而磨滅的價值。今天,無論是重構本身,業界對重構的理解,還是開發工具對重構的支援力度,都與《重構:改善既有程式碼的設計》最初出版時不可同日而語,但書中所蘊涵的意味和精華,依然值得反覆咀嚼,而且往往能夠常讀常新。

《重構:改善既有程式碼的設計》清晰地揭示了重構的過程,解釋了重構的原理和最佳實踐方式,並給出了何時以及何地應該開始挖掘程式碼以求改善。書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的程式碼變換手法的動機和技術。《重構:改善既有程式碼的設計》提出的重構準則將幫助你一次一小步地修改你的程式碼,從而減少了開發過程中的風險。

《重構:改善既有程式碼的設計》適合軟體開發人員、專案管理人員等閱讀,也可作為高等院校計算機及相關專業師生的參考讀物。

目錄

第1 重構,第一個案例
1.1 起點
1.2 重構的第一步
1.3 分解並重組Statemen
1.4 運用多型取代與價格相關的條件邏輯
1.5 結語
第2 重構原則


2.1 何謂重構
2.2 為何重構
2.3 何時重構
2.4 怎麼對經理說
2.5 重構的難題
2.6 重構與設計
2.7 重構與效能
2.8 重構起源何處
第3 程式碼的壞味道
3.1 Duplicated Code(重複的程式碼)
3.2 Long Method(過長函式)
3.3 Large Class(過大類)
3.4 Long Parameter List(過長引數列)
3.5 Divergent Change(發散式變化)
3.6 Shortgun Surgery(霰彈式修改)
3.7 Feature Envy(依戀情結)
3.8 Data Clumps(資料泥團)
3.9 Primitive Obsession(基本型別偏執)
3.10 Switch Statements(switch驚悚現身)
3.11 Parallel Inheritance Hierarchies(平行繼承體系)
3.12 Lazy Class(冗贅類)
3.13 Speculative Generality(誇誇其談未來性)
3.14 Temporary Field(令人迷惑的暫時值域)
3.15 Message Chai (過度耦合的訊息鏈)
3.16 Middle Man(中間轉手人)
3.17 Inappropriate Intimacy(狎暱關係)
3.18 Alternative Classes with Different Interfaces(異曲同工的類)
3.19 Incomplete Library Class(不完善的程式庫類)
3.20 Data Class(純稚的資料類)
3.21 Refused Bequest(被拒絕的遺贈)
3.22 Comments(過多的註釋)

第4 建立測試體系
4.1 自我測試碼的價值
4.2 JUnit測試框架
4.3 新增更多測試
第5 重構名錄
5.1 重構的記錄格式
5.2 尋找引用點
5.3 這些重構準則有多成熟
第6 重新組織你的函式
6.1 Extract Method(提煉函式)
6.2 Inline Method(將函式內聯化)
6.3 Inline Temp(將臨時變數內聯化)
6.4 Replace Temp With Query(以查詢取代臨時變數)
6.5 Introduce Explaining Variable(引入解釋性變數)
6.6 Split Temporary Variable(剖解臨時變數)
6.7 Remove Assignments to Paramete (移除對引數的賦值動作)
6.8 Replace Method with Method Object(以函式物件取代函式)
6.9 Substitute Algorithm(替換你的演算法)
第7 在物件之間移動特性
7.1 Move Method(搬移函式)
7.2 Move Field(搬移值域)
7.3 Extract Class(提煉類)
7.4 Inline Class(將類內聯化)
7.5 Hide Delegate(隱藏「委託關係」)
7.6 Remove Middle Man(移除中間人)
7.7 Introduce Foreign Method(引入外加函式)
7.8 Introduce Local Exte ion(引入本地擴充套件)
第8 重新組織你的資料
8.1 Self Encapsulate Field(自封裝值域)
8.2 Replace Data Value with Object(以物件取代資料值)
8.3 Change Value to Reference(將實值物件改為引用物件)
8.4 Change Reference to Value(將引用物件改為實值物件)
8.5 Replace Array with Object(以物件取代陣列)
8.6 Duplicate Observed Data(複製「被監視資料」)
8.7 Change Unidirectional Association to Bidirectional(將單向關聯改為雙向)
8.8 Change Bidirectional Association to Unidirectional(將雙向關聯改為單向)
8.9 Replace Magic Number with Symbolic Co tant (以符號常量/字面常量取代魔法數)
8.10 Encapsulate Field(封裝值域)
8.11 Encapsulate Collection(封裝群集)
8.12 Replace Record with Data Class(以資料類取代記錄)
8.13 Replace Type Code with Class(以類取代型別碼)
8.14 Replace Type Code with Subclasses (以子類取代型別碼)
8.15 Replace Type Code with State/Strategy (以State/Strategy取代型別碼)
8.16 Replace Subclass with Fields(以值域取代子類)

第9 簡化條件表示式
9.1 Decompose Conditional(分解條件式)
9.2 Co oli date Conditional Ex pression(合併條件式)
9.3 Co oli date Duplicate Conditional Fragments (合併重複的條件片段)
9.4 Remove Control Flag(移除控制標記)
9.5 Replace Nested Conditional with Guard Clauses (以衛語句取代巢狀條件式)
9.6 Replace Conditional with Polymorphism(以多型取代條件式)
9.7 Introduce Null Object(引入Null物件)
9.8 Introduce Assertion(引入斷言)
第10 簡化函式呼叫
10.1 Rename Method(重新命名函式)
10.2 Add Parameter(新增引數)
10.3 Remove Parameter(移除引數)
10.4 Separate Query from Modifier(將查詢函式和修改函式分離)
10.5 Parameterize Method(令函式攜帶引數)
10.6 Replace Parameter with Explicit Methods(以明確函式取代引數)
10.7 Preserve Whole Object(保持物件完整)
10.8 Replace Parameter with Method(以函式取代引數)
10.9 Introduce Parameter Object(引入引數物件)
10.10 Remove Setting Method(移除設值函式)
10.11 Hide Method(隱藏你的函式)
10.12 Replace Co tructor with Factory Method(以工廠方法取代建構函式)
10.13 Encapsulate Downcast(封裝「向下轉型」動作)
10.14 Replace Error Code with Exception(以異常取代錯誤碼)
10.15 Replace Exception with Test(以測試取代異常)

相關推薦

重構-改善程式碼設計-重構原則(1)

神馬是重構?從兩方面來說: 一個是名詞:對軟體內部結構的一種調整,目的是在不改變軟體可觀察行為的前提下,提高其可理解性,降低其修改成本。 一個是動詞:使用一系列重構手法,在不改變軟體可觀察行為的前提下,調整其結構。 對重構的擴充套件: 1.重構的目的是使軟體更容易被理解和修改。(

重構 改善程式碼設計---第三章 程式碼壞味道

3.1 重複程式碼 程式碼重複會讓整個類變得更大,影響程式碼閱讀。 1.同個類:不同方法中多次出現重複的程式碼或者表示式時,可以使用“提煉方法”的方式將重複程式碼或表示式提煉到方法A中,所有使用到這段程式碼或者表示式的方法通過對A方法的呼叫實現功能 2.兩個互為兄弟的類中含有相同的程

重構——改善程式碼設計PDF

編輯推薦重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善程式碼。多年前,正是《重構:改善既有程式碼的設計》原版的出版,使重構終於從程式設計高手們的小圈子走出,成為眾多普通程式設計師日常開發工作中不可或缺的一部分。《重構:改善既有程式碼的設計》也因此成為與《設計模

重構-改善程式碼設計中文版 pdf下載

縱覽武俠江湖,制勝法門不外兩項,內功和外功。二者得一可天下去得,但最終皆入內外兼修之境倚天是自內而外,先修內功九陽真經,然後以此為基礎,加上太極拳和太極劍,最終成就天下第一高手笑傲是自外而內,先學獨孤九劍,後學吸星大法,最後學易筋經。神鵰也不外如是,玉女心經算是外功,內功則是獨孤求敗之法門。只修內不修外,好比

重構改善程式碼設計pdf附網盤下載連結送給還在迷茫的你

技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的

重構-改善程式碼設計pdf

下載地址:網盤下載 編輯推薦 編輯 軟體工程領域的超級經典鉅著,與另一鉅著《設計模式》並稱"軟工雙雄",全美銷量超過100000冊,亞馬遜書店五星書。 在本書中,作者Martin Fowler充分展示了何處可能需要重構,以及如何將不好的設計改造為良好的

重構 改善程式碼設計(要點總結一)

任何一個傻瓜都能寫出計算機能夠理解的程式,唯有寫出人類容易理解的程式,才是優秀的程式設計師。 定義: 對軟體內部結構的一種調整,目的是在不改變軟體可觀察行為的前提下,提高其可理解性,降低其修改成本 目的: 使軟體更容易被理解和修改。 與之形成對比的是效能

讀《重構-改善程式碼設計》第二章

第二章:重構原則 何為重構 為何重構 何時重構 重構與設計 重構與效能 何為重構 對軟體內部結構使用重構手法的一種調整,目的是在不改變軟體可觀察行為的前提下,提高其可理解性,降低其修改成本。

重構--改善程式碼設計》 --MartinFowler

《重構--改善既有程式碼的設計》 --Martin Fowler 重構定義: 在不改變軟體可觀察行為的前提下,對軟體內部進行調整(使用重構手法),以提高其可理解性,降低其修改成本。 -- 重點在兩點: 1. 不改變軟體的可觀察行為。2. 提高其可理解性。 兩個目的:1. 新增新功能。 2.

重構-改善程式碼設計》讀書筆記

        重構這個詞,相信程式設計師對這個詞不陌生。不過在讀這本書之前,我對這個詞確實沒什麼概念,儘管我是一個程式設計師。讀完了這本書,我才對重構這個詞有了一個瞭解,以及程式重構的重要性。重構即是對軟體內部結構的一種調整。通過採取一系列的重構手法,在不改變軟體可觀察行為

讀'重構-改善程式碼設計'學習心得

近日受一位資深程式設計師大牛寫的一篇學習路線建議的部落格影響,開始讀《重構-改善既有程式碼的設計》,《大話設計模式》兩書。此篇部落格為讀《重構-改善既有程式碼的設計》的學習心得筆記,將在每天的 學習中,不斷更新... 一、為什麼要重構 重構的意義在於將眼光放長遠,而不僅限

重構 改善程式碼設計》下載

2018年11月01日 12:50:54 qq_43553691 閱讀數:7 標籤: 程式設計 資料

重構 改善程式碼設計 Replace Method with Method Object(以函式物件取代函式)

你有一個大型函式,其中對區域性變數的使用使你無法採用Extract Method。 將這個函式放進一個單獨物件中,如此一來區域性變數就成了物件內的欄位。然後你可以在同一個物件中將這個大型函式分解為多個小型函式。 動機 我們一直在強調,小型函式優美動人。只要將相對獨立的程式碼從大型函式中提煉出來,就大大提

重構 改善程式碼設計——重構原則

1.何謂重構? 答: A.重構(名詞意義):對軟體內部結構的調整,目的是在不改變軟體可觀察行為的前提下,提高其理解性,降低其修改成本; B.重構(動詞意義):使用一系列重構手法,在不改變軟體可觀察行為的前提下,調整其結構; 總結:為了更容易理解和修改軟體,在不改變軟體功能的

重構-改善程式碼設計》讀後總結

最近剛剛畢業入職,剛來團隊不是很忙,身邊同事正好有一本經典書籍《重構-改善既有程式碼的設計》,這本書在我實習的時候團隊週會上曾經大力推薦過。正好這次趁機借來閱讀一遍。 強烈推薦大家閱讀這本書,為什麼呢?因為書皮上面寫著“普通程式設計師進階到程式設計高手必須修煉的祕籍”,這讓我彷彿看到了我的“升值加薪,贏取白富

重構-改善程式碼設計:重新組織函式的九種方法(四)

         函式過長或者邏輯太混亂,重新組織和整理函式的程式碼,使之更合理進行封裝。 提煉函式:(由複雜的函式提煉出獨立的函式或者說大函式分解成由小函式組成)你有一段程式碼可以被組織在一起並獨立出來。將這段程式碼放進一個獨立函式,並讓函式名稱解釋該函式的用途。

重構 改善程式碼設計之在物件之間搬移特性 總結

Move Method(搬移函式) 你的程式中 有個函式與其所駐類之外的另一個類進行更多交流 呼叫後者 或被後者呼叫 在該函式最常引用的類中建立一個有著類似行為的新函式 新舊函式變成一個單純的委託函式

重構-改善程式碼設計:處理概括關係 (九)

簡化函式呼叫 1.  Pull Up Field 欄位上移 兩個子類擁有相同的欄位。將該欄位移至超類。 如果各子類是分別開發的,或者是在重構過程中組合起來的,你常會發現它們擁有重複特性,特別是欄位

重構-改善程式碼設計 讀後總結

重構-改善既有程式碼的設計,這本書是很多公司要求JAVA程式設計師必讀的三本書之一(另外兩本書是《Java程式設計思想》和《Effective Java》) 前言 看到別人的程式碼時感覺就像屎一樣,有一種強烈的想重寫的衝動,但一定要壓制住這種衝動,你完全重寫,可能比

重構-改善程式碼設計(一)--重構第一個案例

什麼是重構 在不改變程式碼外在行為的前提下,對程式碼做出修改以改程序序內部的結構 簡單地說就是在程式碼寫好後改進它的設計 誰該閱讀這本書 專業程式設計師(能夠提高你的程式碼質量) 資深設計師和架構規劃師(理解為什麼需要重構,哪裡需要重構)