**部分 反模式緒論
第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 係統層 29
2.4.6 企業層 31
2.4.7 全球層 32
2.4.8 設計層次小結 32
2.5 架構規模和原力 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 模式係統模闆 38
3.6 對設計模式模闆的反思 38
3.7 反模式模闆 39
3.7.1 僞反模式模闆 40
3.7.2 小型反模式 40
3.8 完整的反模式模闆 40
第4章 對使用反模式的建議 43
4.1 機能不良環境 43
4.2 反模式與變化 44
4.3 編寫新反模式 45
4.4 小結 46
第二部分 反模式
第5章 軟件開發性反模式 49
5.1 軟件重構 49
5.2 開發性反模式摘要 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 對其他視角和規模的適用性 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 對其他視角和規模的適用性 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 對其他視角和規模的適用性 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 對其他視角和規模的適用性 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(煙囪企業) 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 對其他視角和規模的適用性 107
6.3 Stovepipe System(煙囪係統) 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 對其他視角和規模的適用性 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 對其他視角和規模的適用性 117
6.5 Architecture By Implication(實現主導架構) 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 對其他視角和規模的適用性 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 對其他視角和規模的適用性 132
6.7 Reinvent The Wheel(重新發明輪子) 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 對其他視角和規模的適用性 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(規劃緻死) 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 對其他視角和規模的適用性 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 對其他視角和規模的適用性 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
· · · · · · (
收起)