《軟件開(kāi)發(fā)方法學(xué)精選系列:重構(gòu)與模式(修訂版)》開(kāi)創(chuàng)性地深入揭示了重構(gòu)與模式這兩種軟件開(kāi)發(fā)關(guān)鍵技術(shù)之間的聯(lián)系,說(shuō)明了通過(guò)重構(gòu)實(shí)現(xiàn)模式改善既有的設(shè)計(jì),往往優(yōu)于在新的設(shè)計(jì)早期使用模式!盾浖_(kāi)發(fā)方法學(xué)精選系列:重構(gòu)與模式(修訂版)》不僅展示了一種應(yīng)用模式和重構(gòu)的創(chuàng)新方法,而且有助于讀者透過(guò)實(shí)戰(zhàn)深入理解重構(gòu)和模式。書(shū)中講述了27種重構(gòu)方式。
《軟件開(kāi)發(fā)方法學(xué)精選系列:重構(gòu)與模式(修訂版)》適于面向?qū)ο筌浖_(kāi)發(fā)人員閱讀,也可作為高等學(xué)校計(jì)算機(jī)專(zhuān)業(yè)、軟件工程專(zhuān)業(yè)師生的參考讀物。
第1章 本書(shū)的寫(xiě)作緣由
1.1 過(guò)度設(shè)計(jì)
1.2 模式萬(wàn)靈丹
1.3 設(shè)計(jì)不足
1.4 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)和持續(xù)重構(gòu)
1.5 重構(gòu)與模式
1.6 演進(jìn)式設(shè)計(jì)
第2章 重構(gòu)
2.1 何謂重構(gòu)
2.2 重構(gòu)的動(dòng)機(jī)
2.3 眾目睽睽
2.4 可讀性好的代碼
2.5 保持清晰
2.6 循序漸進(jìn)
2.7 設(shè)計(jì)欠賬
2.8 演變出新的架構(gòu)
2.9 復(fù)合重構(gòu)與測(cè)試驅(qū)動(dòng)的重構(gòu)
2.10 復(fù)合重構(gòu)的優(yōu)點(diǎn)
2.11 重構(gòu)工具
第3章 模式
3.1 何謂模式
3.2 模式癡迷
3.3 實(shí)現(xiàn)模式的方式不止一種
3.4 通過(guò)重構(gòu)實(shí)現(xiàn)、趨向和去除模式
3.5 模式是否會(huì)使代碼更加復(fù)雜
3.6 模式知識(shí)
3.7 使用模式的預(yù)先設(shè)計(jì)
第4章 代碼壞味
4.1 重復(fù)代碼(Duplicated Code)
4.2 過(guò)長(zhǎng)函數(shù)(Long Method)
4.3 條件邏輯太復(fù)雜(Conditional Complexity)
4.4 基本類(lèi)型偏執(zhí)(Primitive Obsession)
4.5 不恰當(dāng)?shù)谋┞叮↖ndecent Exposure)
4.6 解決方案蔓延(Solution Sprawl)
4.7 異曲同工的類(lèi)(Alternative Classes with Different Interfaces)
4.8 冗贅類(lèi)(Lazy Class)
4.9 過(guò)大的類(lèi)(Large Class)
4.10 分支語(yǔ)句(Switch Statement)
4.11 組合爆炸(Combinatorial Explosion)
4.12 怪異解決方案(Oddball Solution)
第5章 模式導(dǎo)向的重構(gòu)目錄
5.1 重構(gòu)的格式
5.2 本目錄中引用的項(xiàng)目
5.2.1 XML Builder
5.2.2 HTML Parser
5.2.3 貸款風(fēng)險(xiǎn)計(jì)算程序
5.3 起點(diǎn)
5.4 學(xué)習(xí)順序
第6章 創(chuàng)建
6.1 用Creation Method替換構(gòu)造函數(shù)
6.1.1 動(dòng)機(jī)
6.1.2 做法
6.1.3 示例
6.1.4 變體
6.2 將創(chuàng)建知識(shí)搬移到Factory
6.2.1 動(dòng)機(jī)
6.2.2 做法
6.2.3 示例
6.3 用Factory封裝類(lèi)
6.3.1 動(dòng)機(jī)
6.3.2 做法
6.3.3 示例
6.3.4 變體
6.4 用Factory Method引入多態(tài)創(chuàng)建
6.4.1 動(dòng)機(jī)
6.4.2 做法
6.4.3 示例
6.5 用Builder封裝Composite
6.5.1 做法
6.5.2 示例
6.5.3 變體
6.6 內(nèi)聯(lián)Singleton
6.6.1 動(dòng)機(jī)
6.6.2 做法
6.6.3 示例
第7章 簡(jiǎn)化
7.1 組合方法
7.1.1 動(dòng)機(jī)
7.1.2 做法
7.1.3 示例
7.2 用Strategy替換條件邏輯
7.2.1 動(dòng)機(jī)
7.2.2 做法
7.2.3 示例
7.3 將裝飾功能搬移到Decorator
7.3.1 動(dòng)機(jī)
7.3.2 做法
7.3.3 示例
7.4 用State替換狀態(tài)改變條件語(yǔ)句
7.4.1 動(dòng)機(jī)
7.4.2 做法
7.4.3 示例
7.5 用Composite替換隱含樹(shù)
7.5.1 動(dòng)機(jī)
7.5.2 做法
7.5.3 示例
7.6 用Command替換條件調(diào)度程序
7.6.1 動(dòng)機(jī)
7.6.2 做法
7.6.3 示例
第8章 泛化
8.1 形成Template Method
8.1.1 動(dòng)機(jī)
8.1.2 做法
8.1.3 示例
8.2 提取Composite
8.2.1 動(dòng)機(jī)
8.2.2 做法
8.2.3 示例
8.3 用Composite替換一/多之分
8.3.1 動(dòng)機(jī)
8.3.2 做法
8.3.3 示例
8.4 用Observer替換硬編碼的通知
8.4.1 動(dòng)機(jī)
8.4.2 做法
8.4.3 示例
8.5 通過(guò)Adapter統(tǒng)一接口
8.5.1 動(dòng)機(jī)
8.5.2 做法
8.5.3 示例
8.6 提取Adapter
8.6.1 動(dòng)機(jī)
8.6.2 做法
8.6.3 示例
8.6.4 變體
8.7 用Interpreter替換隱式語(yǔ)言
8.7.1 動(dòng)機(jī)
8.7.2 做法
8.7.3 示例
第9章 保護(hù)
9.1 用類(lèi)替換類(lèi)型代碼
9.1.1 動(dòng)機(jī)
9.1.2 做法
9.1.3 示例
9.2 用Singleton限制實(shí)例化
9.2.1 動(dòng)機(jī)
9.2.2 做法
9.2.3 示例
9.3 引入Null Object
9.3.1 動(dòng)機(jī)
9.3.2 做法
9.3.3 示例
第10章 聚集操作
10.1 將聚集操作搬移到Collecting Parameter
10.1.1 動(dòng)機(jī)
10.1.2 做法
10.1.3 示例
10.2 將聚集操作搬移到Visitor
10.2.1 動(dòng)機(jī)
10.2.2 做法
10.2.3 示例
第11章 實(shí)用重構(gòu)
11.1 鏈構(gòu)造函數(shù)
11.1.1 動(dòng)機(jī)
11.1.2 做法
11.1.3 示例
11.2 統(tǒng)一接口
11.2.1 動(dòng)機(jī)
11.2.2 做法
11.2.3 示例
11.3 提取參數(shù)
11.3.1 動(dòng)機(jī)
11.3.2 做法
11.3.3 示例
跋
參考文獻(xiàn)
索引