注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)重構(gòu):改善既有代碼的設(shè)計(jì)(第2版 平裝版)

重構(gòu):改善既有代碼的設(shè)計(jì)(第2版 平裝版)

重構(gòu):改善既有代碼的設(shè)計(jì)(第2版 平裝版)

定 價(jià):¥99.00

作 者: [美] 馬丁·福勒(Martin Fowler) 著,熊節(jié),林從羽 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787115508652 出版時(shí)間: 2019-05-01 包裝: 平裝
開本: 16開 頁(yè)數(shù): 421 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

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

圖書目錄

第 1 章 重構(gòu),第 一個(gè)示例 1
1.1 起點(diǎn) 1
1.2 對(duì)此起始程序的評(píng)價(jià) 3
1.3 重構(gòu)的第 一步 5
1.4 分解statement 函數(shù) 6
1.5 進(jìn)展:大量嵌套函數(shù) 22
1.6 拆分計(jì)算階段與格式化階段 24
1.7 進(jìn)展:分離到兩個(gè)文件(和兩個(gè)階段) 31
1.8 按類型重組計(jì)算過程 34
1.9 進(jìn)展:使用多態(tài)計(jì)算器來(lái)提供數(shù)據(jù) 41
1.10 結(jié)語(yǔ) 43
第 2 章 重構(gòu)的原則 45
2.1 何謂重構(gòu) 45
2.2 兩頂帽子 46
2.3 為何重構(gòu) 47
2.4 何時(shí)重構(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 自動(dòng)化重構(gòu) 68
2.11 延展閱讀 70
第3 章 代碼的壞味道 71
3.1 神秘命名(Mysterious Name) 72
3.2 重復(fù)代碼(Duplicated Code) 72
3.3 過長(zhǎng)函數(shù)(Long Function) 73
3.4 過長(zhǎng)參數(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ù)泥團(tuán)(Data Clumps) 78
3.11 基本類型偏執(zhí)(Primitive Obsession) 78
3.12 重復(fù)的switch(Repeated Switches) 79
3.13 循環(huán)語(yǔ)句(Loops) 79
3.14 冗贅的元素(Lazy Element) 80
3.15 夸夸其談通用性(Speculative Generality) 80
3.16 臨時(shí)字段(Temporary Field) 80
3.17 過長(zhǎng)的消息鏈(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 被拒絕的遺贈(zèng)(Refused Bequest) 83
3.24 注釋(Comments) 84
第4 章 構(gòu)筑測(cè)試體系 85
4.1 自測(cè)試代碼的價(jià)值 85
4.2 待測(cè)試的示例代碼 87
4.3 第 一個(gè)測(cè)試 90
4.4 再添加一個(gè)測(cè)試 93
4.5 修改測(cè)試夾具 95
4.6 探測(cè)邊界條件 96
4.7 測(cè)試遠(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ù)對(duì)象(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 以對(duì)象取代基本類型(Replace Primitive with Object) 174
7.4 以查詢?nèi)〈R時(shí)變量(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ù)(Move Function) 198
8.2 搬移字段(Move Field) 207
8.3 搬移語(yǔ)句到函數(shù)(Move Statements into Function) 213
8.4 搬移語(yǔ)句到調(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 移動(dòng)語(yǔ)句(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 將引用對(duì)象改為值對(duì)象(Change Reference to Value) 252
9.5 將值對(duì)象改為引用對(duì)象(Change Value to Reference) 256
第 10 章 簡(jiǎn)化條件邏輯 259
10.1 分解條件表達(dá)式(Decompose Conditional) 260
10.2 合并條件表達(dá)式(Consolidate Conditional Expression) 263
10.3 以衛(wèi)語(yǔ)句取代嵌套條件表達(dá)式(Replace Nested Conditional with Guard Clauses) 266
10.4 以多態(tài)取代條件表達(dá)式(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 保持對(duì)象完整(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
參考文獻(xiàn) 405
索引 409

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)