第一部分 反模式緒論
第1章 模式與反模式簡介 3
1.1 反模式就是揭露假象 3
1.2 反模式的概念 6
1.3 反模式的由來 7
1.4 本書組織結構 10
第2章 反模式參考模型 11
2.1 視角 13
2.2 根源 14
2.2.1 匆忙 14
2.2.2 漠然 15
2.2.3 思想狹隘 16
2.2.4 懶惰 16
2.2.5 貪婪 17
2.2.6 無知 18
2.2.7 自負 18
2.3 原力 19
2.4 軟件設計層次模型 25
2.4.1 對象層 28
2.4.2 微架構層 28
2.4.3 框架層 28
2.4.4 應用層 29
2.4.5 系統(tǒng)層 29
2.4.6 企業(yè)層 31
2.4.7 全球層 32
2.4.8 設計層次小結 32
2.5 架構規(guī)模和原力 33
第3章 模式和反模式的模板 35
3.1 退化形式 35
3.2 Alexander形式 36
3.3 最小化模板(微型模式) 36
3.4 小型模式模板 36
3.4.1 歸納式小型模式 37
3.4.2 演繹式小型模式 37
3.5 正式模板 37
3.5.1 GoF模板 37
3.5.2 模式系統(tǒng)模板 38
3.6 對設計模式模板的反思 38
3.7 反模式模板 39
3.7.1 偽反模式模板 40
3.7.2 小型反模式 40
3.8 完整的反模式模板 40
第4章 對使用反模式的建議 43
4.1 機能不良環(huán)境 43
4.2 反模式與變化 44
4.3 編寫新反模式 45
4.4 小結 46
第二部分 反模式
第5章 軟件開發(fā)性反模式 49
5.1 軟件重構 49
5.2 開發(fā)性反模式摘要 50
5.3 The Blob(胖球) 52
5.3.1 背景 52
5.3.2 一般形式 53
5.3.3 癥狀和后果 54
5.3.4 典型原因 54
5.3.5 已知例外 55
5.3.6 重構方案 55
5.3.7 變化 58
5.3.8 對其他視角和規(guī)模的適用性 59
5.3.9 示例 59
5.4 Lava Flow(巖漿流) 62
5.4.1 背景 62
5.4.2 一般形式 63
5.4.3 癥狀和后果 65
5.4.4 典型原因 65
5.4.5 已知例外 66
5.4.6 重構方案 66
5.4.7 示例 66
5.4.8 相關解決方案 67
5.4.9 對其他視角和規(guī)模的適用性 67
5.5 Functional Decomposition(功能分解) 69
5.5.1 背景 69
5.5.2 一般形式 69
5.5.3 癥狀和后果 69
5.5.4 典型原因 70
5.5.5 已知例外 70
5.5.6 重構方案 70
5.5.7 示例 71
5.5.8 相關解決方案 72
5.5.9 對其他視角和規(guī)模的適用性 72
5.6 Poltergeist(惡作劇鬼) 73
5.6.1 背景 73
5.6.2 一般形式 73
5.6.3 癥狀和后果 74
5.6.4 典型原因 75
5.6.5 已知例外 75
5.6.6 重構方案 75
5.6.7 示例 75
5.6.8 相關解決方案 76
5.6.9 對其他視角和規(guī)模的適用性 76
5.7 Golden Hammer(金錘) 78
5.7.1 背景 78
5.7.2 一般形式 79
5.7.3 癥狀和后果 79
5.7.4 典型原因 79
5.7.5 已知例外 79
5.7.6 重構方案 80
5.7.7 變化 81
5.7.8 示例 81
5.7.9 相關方案 81
5.8 Spaghetti Code(面條代碼) 83
5.8.1 背景 83
5.8.2 一般形式 83
5.8.3 癥狀和后果 83
5.8.4 典型原因 84
5.8.5 已知例外 84
5.8.6 重構方案 84
5.8.7 示例 86
5.8.8 相關解決方案 89
5.9 Cut-And-Paste Programming(剪貼編程) 92
5.9.1 背景 92
5.9.2 一般形式 92
5.9.3 癥狀和后果 92
5.9.4 典型原因 93
5.9.5 已知例外 93
5.9.6 重構方案 93
5.9.7 示例 94
5.9.8 相關解決方案 95
第6章 軟件架構性反模式 97
6.1 架構性反模式摘要 98
6.2 Stovepipe Enterprise(煙囪企業(yè)) 100
6.2.1 背景 100
6.2.2 一般形式 100
6.2.3 癥狀和后果 101
6.2.4 典型原因 101
6.2.5 已知例外 101
6.2.6 重構方案 102
6.2.7 示例 105
6.2.8 相關解決方案 106
6.2.9 對其他視角和規(guī)模的適用性 107
6.3 Stovepipe System(煙囪系統(tǒng)) 108
6.3.1 背景 108
6.3.2 一般形式 108
6.3.3 癥狀和后果 109
6.3.4 典型原因 109
6.3.5 已知例外 109
6.3.6 重構方案 109
6.3.7 示例 110
6.3.8 相關解決方案 112
6.3.9 對其他視角和規(guī)模的適用性 112
6.4 Vendor Lock-In(供應商鎖定) 113
6.4.1 背景 113
6.4.2 一般形式 114
6.4.3 癥狀和后果 114
6.4.4 典型原因 114
6.4.5 已知例外 115
6.4.6 重構方案 115
6.4.7 變化 116
6.4.8 示例 117
6.4.9 相關解決方案 117
6.4.10 對其他視角和規(guī)模的適用性 117
6.5 Architecture By Implication(實現(xiàn)主導架構) 120
6.5.1 背景 120
6.5.2 一般形式 120
6.5.3 癥狀和后果 121
6.5.4 典型原因 121
6.5.5 已知例外 121
6.5.6 重構方案 122
6.5.7 變化 123
6.5.8 示例 123
6.5.9 相關解決方案 124
6.5.10 對其他視角和規(guī)模的適用性 124
6.6 Design By Committee(委員會設計) 126
6.6.1 背景 126
6.6.2 一般形式 126
6.6.3 癥狀和后果 126
6.6.4 典型原因 127
6.6.5 已知例外 127
6.6.6 重構方案 127
6.6.7 變化 129
6.6.8 示例 129
6.6.9 相關解決方案、模式和反模式 131
6.6.10 對其他視角和規(guī)模的適用性 132
6.7 Reinvent The Wheel(重新發(fā)明輪子) 134
6.7.1 背景 134
6.7.2 一般形式 134
6.7.3 癥狀和后果 135
6.7.4 典型原因 135
6.7.5 已知例外 135
6.7.6 重構方案 135
6.7.7 變化 136
6.7.8 示例 137
6.7.9 相關解決方案 139
6.7.10 對其他視角和規(guī)模的適用性 139
第7章 軟件項目管理性反模式 141
7.1 管理角色的轉變 141
7.2 管理性反模式摘要 142
7.3 Analysis Paralysis(分析癱瘓) 145
7.3.1 背景 145
7.3.2 一般形式 145
7.3.3 癥狀和后果 146
7.3.4 典型原因 146
7.3.5 已知例外 147
7.3.6 重構方案 147
7.4 Death By Planning(規(guī)劃致死) 149
7.4.1 背景 149
7.4.2 一般形式 149
7.4.3 癥狀和后果 151
7.4.4 典型原因 152
7.4.5 已知例外 152
7.4.6 重構方案 152
7.4.7 變化 154
7.4.8 示例 156
7.4.9 相關解決方案 157
7.4.10 對其他視角和規(guī)模的適用性 158
7.5 Corncob(玉米棒子) 159
7.5.1 背景 159
7.5.2 一般形式 159
7.5.3 癥狀和后果 159
7.5.4 典型原因 160
7.5.5 已知例外 160
7.5.6 重構方案 160
7.5.7 變化 161
7.5.8 示例 163
7.5.9 相關解決方案 163
7.5.10 對其他視角和規(guī)模的適用性 163
7.6 Irrational Management(非理性管理) 165
7.6.1 背景 165
7.6.2 一般形式 165
7.6.3 癥狀和后果 166
7.6.4 典型原因 166
7.6.5 已知例外 166
7.6.6 重構方案 166
7.6.7 變化 169
7.6.8 示例 169
7.7 Project Mismanagement(項目管理不善) 172
7.7.1 背景 172
7.7.2 一般形式 172
7.7.3 癥狀和后果 173
7.7.4 典型原因 173
7.7.5 已知例外 173
7.7.6 重構方案 173
7.7.7 變化 174
7.7.8 示例 175
7.7.9 相關解決方案 176
第三部分 結論和資源
附錄A 反模式大綱 181
附錄B 反模式術語表 187
附錄C 縮略語 191
附錄D 參考文獻 193
索引 199