重構與模式 (Refactoring to Patterns)

Joshua Kerievsky

買這商品的人也買了...

商品描述

<內容介紹>

《重構與模式(修訂版)》開創性地深入揭示了重構與模式這兩種軟件開發關鍵技術之間的聯繫,說明瞭通過重構實現模式改善既有的設計,往往優於在新的設計早期使用模式。《重構與模式(修訂版)》不僅展示了一種應用模式和重構的創新方法,而且有助於讀者透過實戰深入理解重構和模式。書中講述了27種重構方式。
  《重構與模式(修訂版)》適於面向對象軟件開發人員閱讀,也可作為高等學校計算機專業、軟件工程專業師生的參考讀物。

<目錄>


第1章本書的寫作緣由1
1.1過度設計1
1.2模式萬靈丹2
1.3設計不足2
1.4測試驅動開發和持續重構3
1.5重構與模式5
1.6演進式設計6
第2章重構7
2.1何謂重構7
2.2重構的動機8
2.3眾目睽睽9
2.4可讀性好的代碼10
2.5保持清晰11
2.6循序漸進11
2.7設計欠賬12
2.8演變出新的架構13
2.9複合重構與測試驅動的重構13
2.10複合重構的優點15
2.11重構工具15
第3章模式17
3.1何謂模式17
3.2模式痴迷18
3.3實現模式的方式不止一種20
3.4通過重構實現、趨向和去除模式22
3.5模式是否會使代碼更加複雜24
3.6模式知識25
3.7使用模式的預先設計26
第4章代碼壞味28
4.1重複代碼(DuplicatedCode) 30
4.2過長函數(LongMethod) 30
4.3條件邏輯太複雜(ConditionalComplexity) 31
4.4基本類型偏執(PrimitiveObsession) 32
4.5不恰當的暴露(IndecentExposure) 32
4.6解決方案蔓延(SolutionSprawl) 33
4.7異曲同工的類(AlternativeClasseswithDifferentInterfaces) 33
4.8冗贅類(LazyClass) 33
4.9過大的類(LargeClass) 33
4.10分支語句(SwitchStatement) 34
4.11組合爆炸(CombinatorialExplosion) 34
4.12怪異解決方案(OddballSolution) 34
第5章模式導向的重構目錄36
5.1重構的格式36
5.2本目錄中引用的項目37
5.2.1 XMLBuilder 38
5.2.2 HTMLParser 38
5.2 .3貸款風險計算程序39
5.3起點39
5.4學習順序39
第6章創建41
6.1用CreationMethod替換構造函數43
6.1.1動機43
6.1.2做法45
6.1.3示例45
6.1.4變體49
6.2將創建知識搬移到Factory 51
6.2.1動機51
6.2.2做法54
6.2.3示例55
6.3用Factory封裝類60
6.3.1動機60
6.3.2做法61
6.3.3示例62
6.3.4變體65
6.4用FactoryMethod引入多態創建67
6.4.1動機67
6.4.2做法68
6.4.3示例70
6.5用Builder封裝Composite 74
6.5.1做法76
6.5.2示例77
6.5.3變體87
6.6內聯Singleton 90
6.6.1動機90
6.6.2做法92
6.6.3示例93
第7章簡化96
7.1組合方法97
7.1.1動機97
7.1.2做法99
7.1.3示例99
7.2用Strategy替換條件邏輯102
7.2.1動機102
7.2. 2做法104
7.2.3示例105
7.3將裝飾功能搬移到Decorator 115
7.3.1動機115
7.3.2做法118
7.3.3示例119
7.4用State替換狀態改變條件語句133
7.4.1動機133
7.4.2做法134
7.4.3示例135
7.5用Composite替換隱含樹143
7.5.1動機143
7.5.2做法146
7.5.3示例147
7.6用Command替換條件調度程序155
7.6.1動機155
7.6.2做法157
7.6.3示例158
第8章泛化164
8.1形成TemplateMethod 165
8.1.1動機166
8.1.2做法167
8.1.3示例167
8.2提取Composite 172
8.2.1動機172
8.2.2做法173
8.2.3示例174
8.3用Composite替換一多之分180
8.3.1動機180
8.3.2做法182
8.3.3示例183
8.4用Observer替換硬編碼的通知190
8.4.1動機190
8.4.2做法191
8.4.3示例192
8.5通過Adapter統一接口199
8.5 .1動機199
8.5.2做法200
8.5.3示例201
8.6提取Adapter 208
8.6.1動機208
8.6.2做法210
8.6.3示例210
8.6.4變體216
8.7用Interpreter替換隱式語言217
8.7.1動機217
8.7.2做法219
8.7.3示例220
第9章保護230
9.1用類替換類型代碼231
9.1.1動機231
9.1.2做法233
9.1.3示例234
9.2用Singleton限制實例化240
9.2.1動機240
9.2.2做法241
9.2.3示例241
9.3引入NullObject 244
9.3.1動機244
9.3.2做法246
9.3.3示例247
第10章聚集操作252
10.1將聚集操作搬移到CollectingParameter 253
10.1.1動機253
10.1 .2做法254
10.1.3示例255
10.2將聚集操作搬移到Visitor 259
10.2.1動機259
10.2.2做法263
10.2.3示例267
第11章實用重構274
11.1鏈構造函數275
11.1.1動機275
11.1 .2做法276
11.1.3示例276
11.2統一接口278
11.2.1動機278
11.2.2做法279
11.2.3示例279
11.3提取參數280
11.3.1動機280
11.3.2做法280
11.3.3示例281
跋282
參考文獻283
索引286