歡迎光臨中圖網(wǎng) 請 | 注冊
> >>
重構(gòu):改善既有代碼的設(shè)計:improving the design of existing code

重構(gòu):改善既有代碼的設(shè)計:improving the design of existing code

出版社:人民郵電出版社出版時間:2019-04-01
開本: 25cm 頁數(shù): 421頁
中 圖 價:¥105.8(6.3折) 定價  ¥168.0 登錄后可看到會員價
加入購物車 收藏
運費6元,滿39元免運費
?新疆、西藏除外
本類五星書更多>
買過本商品的人還買了

重構(gòu):改善既有代碼的設(shè)計:improving the design of existing code 版權(quán)信息

重構(gòu):改善既有代碼的設(shè)計:improving the design of existing code 本書特色

《重構(gòu) 改善既有代碼的設(shè)計 第2版 全彩精裝版》是經(jīng)典著作《重構(gòu)》出版20年后的更新版。書中清晰揭示了重構(gòu)的過程,解釋了重構(gòu)的原理和*實踐方式,并給出了何時以及何地應(yīng)該開始挖掘代碼以求改善。書中給出了60多個可行的重構(gòu),每個重構(gòu)都介紹了一種經(jīng)過驗證的代碼變換手法的動機和技術(shù)。本書提出的重構(gòu)準(zhǔn)則將幫助開發(fā)人員一次一小步地修改代碼,從而減少了開發(fā)過程中的風(fēng)險。 《重構(gòu) 改善既有代碼的設(shè)計 第2版 全彩精裝版》適合軟件開發(fā)人員、項目管理人員等閱讀,也可作為高等院校計算機及相關(guān)專業(yè)師生的參考讀物。

重構(gòu):改善既有代碼的設(shè)計:improving the design of existing code 內(nèi)容簡介

1. 世界軟件開發(fā)大師的不朽經(jīng)典 2. 生動闡述重構(gòu)原理和具體做法    3. 普通程序員進階到編程高手必須修煉的秘笈 4. 全彩印刷,精裝版本,更適合案頭常備 重構(gòu),一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。20 多年前,正是《重構(gòu):改善既有代碼的設(shè)計》第1 版的出版,使重構(gòu)終于從編程高手們的小圈子走出,成為眾多普通程序員日常開發(fā)工作中不可或缺的一部分。如今,Martin Fowler 的《重構(gòu):改善既有代碼的設(shè)計》一書已經(jīng)成為全球有經(jīng)驗的程序員手中的利器,既可用來改善既有代碼的設(shè)計、提升軟件的可維護性,又可用于使既有代碼更易理解、煥發(fā)出新的活力。 這本備受關(guān)注的第2 版在第1 版的基礎(chǔ)上做了全面修訂,反映了編程領(lǐng)域業(yè)已發(fā)生的許多變化。第2 版中介紹的重構(gòu)列表更加內(nèi)聚,并用JavaScript 語言重寫了代碼范例。此外,第2 版中還新增了與函數(shù)式編程相關(guān)的重構(gòu)范例,旨在教會讀者如何在沒有類的環(huán)境下開展重構(gòu)。 新版沿襲了第1 版的結(jié)構(gòu),依次解釋什么是重構(gòu),為什么要重構(gòu),如何通過“壞味道”識別出需要重構(gòu)的代碼,以及如何在實踐中成功實施重構(gòu)(無論用的是什么編程語言)。 ● 理解重構(gòu)的過程和重構(gòu)的基本原則; ● 快速有效地應(yīng)用各種重構(gòu)手法,提升程序的表達力和可維護性; ● 識別代碼中能指示出需要重構(gòu)的地方的“壞味道”; ● 深入了解各種重構(gòu)手法,每個手法都包含解釋、動機、做法和范例4 個部分; ● 構(gòu)建穩(wěn)固的測試,以支持重構(gòu)工作的開展; ● 理解重構(gòu)過程的權(quán)衡取舍以及重構(gòu)存在的挑戰(zhàn)等。 本書凝聚了軟件開發(fā)社區(qū)專家多年摸索而獲得的寶貴經(jīng)驗,書中所蘊涵的思想和精華,值得反復(fù)咀嚼,而且往往能夠常讀常新。

重構(gòu):改善既有代碼的設(shè)計:improving the design of existing code 目錄

第 1 章 重構(gòu),第 一個示例 1

1.1 起點 1

1.2 對此起始程序的評價 3

1.3 重構(gòu)的第 一步 5

1.4 分解statement 函數(shù) 6

1.5 進展:大量嵌套函數(shù) 22

1.6 拆分計算階段與格式化階段 24

1.7 進展:分離到兩個文件(和兩個階段) 31

1.8 按類型重組計算過程 34

1.9 進展:使用多態(tài)計算器來提供數(shù)據(jù) 41

1.10 結(jié)語 43

第 2 章 重構(gòu)的原則 45

2.1 何謂重構(gòu) 45

2.2 兩頂帽子 46

2.3 為何重構(gòu) 47

2.4 何時重構(gòu) 50

2.5 重構(gòu)的挑戰(zhàn) 55

2.6 重構(gòu)、架構(gòu)和YAGNI 62

2.7 重構(gòu)與軟件開發(fā)過程 63

2.8 重構(gòu)與性能 64

2.9 重構(gòu)起源何處 67

2.10 自動化重構(gòu) 68

2.11 延展閱讀 70

第3 章 代碼的壞味道 71

3.1 神秘命名(Mysterious Name) 72

3.2 重復(fù)代碼(Duplicated Code) 72

3.3 過長函數(shù)(Long Function) 73

3.4 過長參數(shù)列表(Long Parameter List) 74

3.5 全局?jǐn)?shù)據(jù)(Global Data) 74

3.6 可變數(shù)據(jù)(Mutable Data) 75

3.7 發(fā)散式變化(Divergent Change) 76

3.8 霰彈式修改(Shotgun Surgery) 76

3.9 依戀情結(jié)(Feature Envy) 77

3.10 數(shù)據(jù)泥團(Data Clumps) 78

3.11 基本類型偏執(zhí)(Primitive Obsession) 78

3.12 重復(fù)的switch(Repeated Switches) 79

3.13 循環(huán)語句(Loops) 79

3.14 冗贅的元素(Lazy Element) 80

3.15 夸夸其談通用性(Speculative Generality) 80

3.16 臨時字段(Temporary Field) 80

3.17 過長的消息鏈(Message Chains) 81

3.18 中間人(Middle Man) 81

3.19 內(nèi)幕交易(Insider Trading) 82

3.20 過大的類(Large Class) 82

3.21 異曲同工的類(Alternative Classes with Different Interfaces) 83

3.22 純數(shù)據(jù)類(Data Class) 83

3.23 被拒絕的遺贈(Refused Bequest) 83

3.24 注釋(Comments) 84

第4 章 構(gòu)筑測試體系 85

4.1 自測試代碼的價值 85

4.2 待測試的示例代碼 87

4.3 第 一個測試 90

4.4 再添加一個測試 93

4.5 修改測試夾具 95

4.6 探測邊界條件 96

4.7 測試遠(yuǎn)不止如此 99

第5 章 介紹重構(gòu)名錄 101

5.1 重構(gòu)的記錄格式 101

5.2 挑選重構(gòu)的依據(jù) 102

第6 章 第 一組重構(gòu) 105

6.1 提煉函數(shù)(Extract Function) 106

6.2 內(nèi)聯(lián)函數(shù)(Inline Function) 115

6.3 提煉變量(Extract Variable) 119

6.4 內(nèi)聯(lián)變量(Inline Variable) 123

6.5 改變函數(shù)聲明(Change Function Declaration) 124

6.6 封裝變量(Encapsulate Variable) 132

6.7 變量改名(Rename Variable) 137

6.8 引入?yún)?shù)對象(Introduce Parameter Object) 140

6.9 函數(shù)組合成類(Combine Functions into Class) 144

6.10 函數(shù)組合成變換(Combine Functions into Transform) 149

6.11 拆分階段(Split Phase) 154

第7 章 封裝 161

7.1 封裝記錄(Encapsulate Record) 162

7.2 封裝集合(Encapsulate Collection) 170

7.3 以對象取代基本類型(Replace Primitive with Object) 174

7.4 以查詢?nèi)〈R時變量(Replace Temp with Query) 178

7.5 提煉類(Extract Class) 182

7.6 內(nèi)聯(lián)類(Inline Class) 186

7.7 隱藏委托關(guān)系(Hide Delegate) 189

7.8 移除中間人(Remove Middle Man) 192

7.9 替換算法(Substitute Algorithm) 195

第8 章 搬移特性 197

8.1 搬移函數(shù) 198

8.2 搬移字段(Move Field) 207

8.3 搬移語句到函數(shù)(Move Statements into Function) 213

8.4 搬移語句到調(diào)用者(Move Statements to Callers) 217

8.5 以函數(shù)調(diào)用取代內(nèi)聯(lián)代碼(Replace Inline Code with Function Call) 222

8.6 移動語句(Slide Statements) 223

8.7 拆分循環(huán)(Split Loop) 227

8.8 以管道取代循環(huán)(Replace Loop with Pipeline) 231

8.9 移除死代碼(Remove Dead Code) 237

第9 章 重新組織數(shù)據(jù) 239

9.1 拆分變量(Split Variable) 240

9.2 字段改名(Rename Field) 244

9.3 以查詢?nèi)〈缮兞浚≧eplace Derived Variable with Query) 248

9.4 將引用對象改為值對象(Change Reference to Value) 252

9.5 將值對象改為引用對象(Change Value to Reference) 256

第 10 章 簡化條件邏輯 259

10.1 分解條件表達式(Decompose Conditional) 260

10.2 合并條件表達式(Consolidate Conditional Expression) 263

10.3 以衛(wèi)語句取代嵌套條件表達式(Replace Nested Conditional with Guard Clauses) 266

10.4 以多態(tài)取代條件表達式(Replace Conditional with Polymorphism) 272

10.5 引入特例(Introduce Special Case) 289

10.6 引入斷言(Introduce Assertion) 302

第 11 章 重構(gòu)API 305

11.1 將查詢函數(shù)和修改函數(shù)分離(Separate Query from Modifier) 306

11.2 函數(shù)參數(shù)化(Parameterize Function) 310

11.3 移除標(biāo)記參數(shù)(Remove Flag Argument) 314

11.4 保持對象完整(Preserve Whole Object) 319

11.5 以查詢?nèi)〈鷧?shù)(Replace Parameter with Query) 324

11.6 以參數(shù)取代查詢(Replace Query with Parameter) 327

11.7 移除設(shè)值函數(shù)(Remove Setting Method) 331

11.8 以工廠函數(shù)取代構(gòu)造函數(shù)(Replace Constructor with Factory Function) 334

11.9 以命令取代函數(shù)(Replace Function with Command) 337

11.10 以函數(shù)取代命令(Replace Command with Function) 344

第 12 章 處理繼承關(guān)系 349

12.1 函數(shù)上移(Pull Up Method) 350

12.2 字段上移(Pull Up Field) 353

12.3 構(gòu)造函數(shù)本體上移(Pull Up Constructor Body) 355

12.4 函數(shù)下移(Push Down Method) 359

12.5 字段下移(Push Down Field) 361

12.6 以子類取代類型碼(Replace Type Code with Subclasses) 362

12.7 移除子類(Remove Subclass) 369

12.8 提煉超類(Extract Superclass) 375

12.9 折疊繼承體系(Collapse Hierarchy) 380

12.10 以委托取代子類(Replace Subclass with Delegate) 381

12.11 以委托取代超類(Replace Superclass with Delegate) 399

參考文獻 405

索引 409

展開全部

重構(gòu):改善既有代碼的設(shè)計:improving the design of existing code 作者簡介

作者簡介 馬丁·福勒(Martin Fowler) 世界軟件開發(fā)大師,ThoughtWorks 首席科學(xué)家。他是一位作家、演說者、咨詢師和泛軟件開發(fā)領(lǐng)域的意見領(lǐng)袖。他致力于改善企業(yè)級的軟件設(shè)計,對優(yōu)秀的設(shè)計以及支撐優(yōu)秀設(shè)計的工程實踐孜孜以求。他在重構(gòu)、面向?qū)ο蠓治鲈O(shè)計、模式、XP 和UML 等領(lǐng)域都有卓越貢獻,著有《重構(gòu)》《分析模式》《領(lǐng)域特定語言》等經(jīng)典著作。 譯者簡介 熊節(jié) 在IT 行業(yè)已經(jīng)打拼了18年,在金融、零售、政府、電信、制造業(yè)等行業(yè)的信息化建設(shè)方面有著豐富經(jīng)驗,是中國IT業(yè)敏捷浪潮的領(lǐng)軍人物。熊節(jié)擁有利物浦大學(xué)MBA學(xué)位。 林從羽 ThoughtWorks軟件開發(fā)工程師,曾服務(wù)于國內(nèi)外多家大型企業(yè),致力于為團隊更快更好地交付可工作的軟件。擁抱敏捷精神,TDD愛好者,純鍵盤工作者。

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網(wǎng)
在線客服