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 规范陷阱 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 专业协会 262
Building a Library 建立藏书阁 262
Internet Resources 因特网资源 266
Bibliography 参考文献 275
B ANSWERS TO EXERCISES 习题解答 279
INDEX 索引 309