1 A PRAGMATIC PHILOSOPHY 注重實效的哲學 1
1. The Cat Ate My Source Code 貓把我的代碼吃了 2
2. Software Entropy 軟件熵 4
3. Stone Soup and Boiled Frogs 石頭湯與被煮的青蛙 7
4. Good-Enough Software 恰到好處的軟件 9
5. Your Knowledge Portfolio 知識資產 12
6. Communicate! 交流! 18
2 A PRAGMATIC APPROACH 注重實效的途徑 25
7. The Evils of Duplication 重復之罪 26
8. Orthogonality 正交性 34
9. Reversibility 可逆性 44
10. Tracer Bullets 曳光彈 48
11. Prototypes and Post-it Notes 原型與便箋 53
12. Domain Languages 領域語言 57
13. Estimating 估算 64
3 THE BASIC TOOLS 基本工具 71
14. The Power of Plain Text 純文本的威力 73
15. Shell Games Shell之妙 77
16. Power Editing 強力編輯 82
17. Source Code Control 源碼控制 86
18. Debugging 調試 90
19. Text Manipulation 文本處理 99
20. Code Generators 代碼生成程序 102
4 PRAGMATIC PARANOIA 注重實效的多疑者 107
21. Design by Contract 按契約設計 109
22. Dead Programs Tell No Lies 死程序不會說謊 120
23. Assertive Programming 斷言式編程 122
24. When to Use Exceptions 何時使用異常 125
25. How to Balance Resources 如何釋放資源 129
5 BEND, OR BREAK 能屈能伸 137
26. Decoupling and the Law of Demeter 解耦與Demeter法則 138
27. Metaprogramming 元編程 144
28. Temporal Coupling 時間耦合 150
29. It's Just a View 它只是視圖 157
30. Blackboards 黑板 165
6 WHILE YOU ARE CODING 當你編程時 171
31. Programming by Coincidence 靠巧合編程 172
32. Algorithm Speed 算法的速度 177
33. Refactoring 重構 184
34. Code That's Easy to Test 易測試的代碼 189
35. Evil Wizards 邪惡的向導 198
7 BEFORE THE PROJECT 項目開始之前 201
36. The Requirements Pit 需求之坑 202
37. Solving Impossible Puzzles 解決不可解的謎題 212
38. Not Until You're Ready 直到準備好 215
39. The Specification Trap 規(guī)范陷阱 217
40. Circles and Arrows 圓圈與箭頭 220
8 PRAGMATIC PROJECTS 注重實效的項目 223
41. Pragmatic Teams 注重實效的項目 224
42. Ubiquitous Automation 無所不在的自動化 230
43. Ruthless Testing 無情的測試 237
44. It's All Writing 代碼文檔不分家 248
45. Great Expectations 巨大的期望 255
46. Pride and Prejudice 傲慢與偏見 258
Appendices
A RESOURCES 資源 261
Professional Societies 專業(yè)協(xié)會 262
Building a Library 建立藏書閣 262
Internet Resources 因特網資源 266
Bibliography 參考文獻 275
B ANSWERS TO EXERCISES 習題解答 279
INDEX 索引 309