本書是一部令人稱奇、耳目一新的著作。書中通過許多有趣的軼事、詳實的例子、詼諧的對話和技術細節,從編程一線審視了軟件開發以及程序員職業生涯方方面面的最佳實踐方案和各種需要注意的前車之鑒。書中給出大量建議,每一條建議都汲取了作者的經驗,並與其他建議相互關聯而形成系統。
本書適合各層次軟件開發人員閱讀,也適合高等院校計算機專業學生和教師閱讀。
目錄
1 A PRAGMATIC PHILOSOPHY 注重實效的哲學
1. The Cat Ate My Source Code 貓把我的代碼吃了
2. Software Entropy 軟件熵
3. Stone Soup and Boiled Frogs 石頭湯與被煮的青蛙
4. Good-Enough Software 恰到好處的軟件
5. Your Knowledge Portfolio 知識資產
6. Communicate! 交流!
2 A PRAGMATIC APPROACH 注重實效的途徑
7. The Evils of Duplication 重復之罪
8. Orthogonality 正交性
9. Reversibility 可逆性
10. Tracer Bullets 曳光彈
11. Prototypes and Post-it Notes 原型與便箋
12. Domain Languages 領域語言
13. Estimating 估算
3 THE BASIC TOOLS 基本工具
14. The Power of Plain Text 純文本的威力
15. Shell Games Shell之妙
16. Power Editing 強力編輯
17. Source Code Control 源碼控制
18. Debugging 調試
19. Text Manipulation 文本處理
20. Code Generators 代碼生成程序
4 PRAGMATIC PARANOIA 注重實效的多疑者
21. Design by Contract 按契約設計
22. Dead Programs Tell No Lies 死程序不會說謊
23. Assertive Programming 斷言式編程
24. When to Use Exceptions 何時使用異常
25. How to Balance Resources 如何釋放資源
5 BEND, OR BREAK 能屈能伸
26. Decoupling and the Law of Demeter 解耦與Demeter法則
27. Metaprogramming 元編程
28. Temporal Coupling 時間耦合
29. It﹀s Just a View 它只是視圖
30. Blackboards 黑板
6 WHILE YOU ARE CODING 當你編程時
31. Programming by Coincidence 靠巧合編程
32. Algorithm Speed 算法的速度
33. Refactoring 重構
34. Code That﹀s Easy to Test 易測試的代碼
35. Evil Wizards 邪惡的向導
7 BEFORE THE PROJECT 項目開始之前
36. The Requirements Pit 需求之坑
37. Solving Impossible Puzzles 解決不可解的謎題
38. Not Until You﹀re Ready 直到準備好
39. The Specification Trap 規範陷阱
40. Circles and Arrows 圓圈與箭頭
8 PRAGMATIC PROJECTS 注重實效的項目
41. Pragmatic Teams 注重實效的項目
42. Ubiquitous Automation 無所不在的自動化
43. Ruthless Testing 無情的測試
44. It﹀s All Writing 代碼文檔不分家
45. Great Expectations 巨大的期望
46. Pride and Prejudice 傲慢與偏見
Appendices
A RESOURCES 資源
Professional Societies 專業協會
Building a Library 建立藏書閣
Internet Resources 因特網資源
Bibliography 參考文獻
B ANSWERS TO EXERCISES 習題解答
INDEX 索引
1. The Cat Ate My Source Code 貓把我的代碼吃了
2. Software Entropy 軟件熵
3. Stone Soup and Boiled Frogs 石頭湯與被煮的青蛙
4. Good-Enough Software 恰到好處的軟件
5. Your Knowledge Portfolio 知識資產
6. Communicate! 交流!
2 A PRAGMATIC APPROACH 注重實效的途徑
7. The Evils of Duplication 重復之罪
8. Orthogonality 正交性
9. Reversibility 可逆性
10. Tracer Bullets 曳光彈
11. Prototypes and Post-it Notes 原型與便箋
12. Domain Languages 領域語言
13. Estimating 估算
3 THE BASIC TOOLS 基本工具
14. The Power of Plain Text 純文本的威力
15. Shell Games Shell之妙
16. Power Editing 強力編輯
17. Source Code Control 源碼控制
18. Debugging 調試
19. Text Manipulation 文本處理
20. Code Generators 代碼生成程序
4 PRAGMATIC PARANOIA 注重實效的多疑者
21. Design by Contract 按契約設計
22. Dead Programs Tell No Lies 死程序不會說謊
23. Assertive Programming 斷言式編程
24. When to Use Exceptions 何時使用異常
25. How to Balance Resources 如何釋放資源
5 BEND, OR BREAK 能屈能伸
26. Decoupling and the Law of Demeter 解耦與Demeter法則
27. Metaprogramming 元編程
28. Temporal Coupling 時間耦合
29. It﹀s Just a View 它只是視圖
30. Blackboards 黑板
6 WHILE YOU ARE CODING 當你編程時
31. Programming by Coincidence 靠巧合編程
32. Algorithm Speed 算法的速度
33. Refactoring 重構
34. Code That﹀s Easy to Test 易測試的代碼
35. Evil Wizards 邪惡的向導
7 BEFORE THE PROJECT 項目開始之前
36. The Requirements Pit 需求之坑
37. Solving Impossible Puzzles 解決不可解的謎題
38. Not Until You﹀re Ready 直到準備好
39. The Specification Trap 規範陷阱
40. Circles and Arrows 圓圈與箭頭
8 PRAGMATIC PROJECTS 注重實效的項目
41. Pragmatic Teams 注重實效的項目
42. Ubiquitous Automation 無所不在的自動化
43. Ruthless Testing 無情的測試
44. It﹀s All Writing 代碼文檔不分家
45. Great Expectations 巨大的期望
46. Pride and Prejudice 傲慢與偏見
Appendices
A RESOURCES 資源
Professional Societies 專業協會
Building a Library 建立藏書閣
Internet Resources 因特網資源
Bibliography 參考文獻
B ANSWERS TO EXERCISES 習題解答
INDEX 索引
序
作為審稿人,我有了提早閱讀本書的機會。即使還處在初稿階段,它就已經是一本很好的書了。Dave Thomas和Andy Hunt有話要說,並且深諳闡述之道。我了解他們所做的事情,知道他們的方式是行之有效的。我主動要求來撰寫這個序,從而有機會來解釋其中的原因。
簡而言之,本書將告訴你怎樣以一種訓練有素的方式編程。也許你認為這不是一件困難的事情,但事情往往並非如此。為什麼?原因之一是,並非所有的編程圖書都是由程序員撰寫的。其中許多圖書是由語言設計者,或是與他們有合作關系的專業技術作者們編撰而成的,意在推銷其作品。那些書所講的只是怎樣使用某種編程語言進行表達⊥一這當然很重要,但這只是程序員工作的一小部分而已。
除了使用編程語言進行表達之外,程序員還需要做些什麼呢?嗯,這是一個更深入的問題了。大多數程序員都不太容易說清楚自己的工作。編程是一項需要兼顧各種細節的工作,留意這些細節需要花費精力。時間流逝,代碼被編寫出來,看看吧,其中全是語句。如果你不假思索,也許會以為編程不過就是輸入某種編程語言的語句。這當然錯了,但搜遍書店的編程專櫃,你卻講不出錯在何處。
在本書中,Dave和Andy告訴我們怎樣以一種訓練有素的方式編程。他們怎麼會如此聰明呢?他們不也和其他程序員一樣,需要專注各種細節嗎?答案是,他們在工作時,會留意自己所做的事情,然後試著加以改善。
設想你正在參加—個會議。你或許在想︰這個會議沒完沒了,還不如去編寫程序呢。而Dave和Andy會想,他們為什麼要開會,是否有其他方式能夠取代開會,而且一些事情可以自動決定,以使開會推後。然後他們就會這樣去做。
這就是Davef口Andy的思考方式。開會並不是阻礙他們編程的事情。開會就是編程,而且是能夠改善的編程。我之所以知道他們這樣的思考方式,是因為這是書中的第二條建議︰思考你的工作。
想像一下吧,他們就這樣思考了幾年,很快就積累了一套解決方案。而他們叉在隨後的幾年中在工作中使用這些解決方案,放棄了其中太過困難或者不能總是產生結果的解決方案。于是,這樣的做法就基本上定義了Pragmatic(注重實效)的含義。現在他們又用了一、兩年來寫出他們的解決方案。你也許會想,這些信息肯定是座“金礦”。完全正確。
……
簡而言之,本書將告訴你怎樣以一種訓練有素的方式編程。也許你認為這不是一件困難的事情,但事情往往並非如此。為什麼?原因之一是,並非所有的編程圖書都是由程序員撰寫的。其中許多圖書是由語言設計者,或是與他們有合作關系的專業技術作者們編撰而成的,意在推銷其作品。那些書所講的只是怎樣使用某種編程語言進行表達⊥一這當然很重要,但這只是程序員工作的一小部分而已。
除了使用編程語言進行表達之外,程序員還需要做些什麼呢?嗯,這是一個更深入的問題了。大多數程序員都不太容易說清楚自己的工作。編程是一項需要兼顧各種細節的工作,留意這些細節需要花費精力。時間流逝,代碼被編寫出來,看看吧,其中全是語句。如果你不假思索,也許會以為編程不過就是輸入某種編程語言的語句。這當然錯了,但搜遍書店的編程專櫃,你卻講不出錯在何處。
在本書中,Dave和Andy告訴我們怎樣以一種訓練有素的方式編程。他們怎麼會如此聰明呢?他們不也和其他程序員一樣,需要專注各種細節嗎?答案是,他們在工作時,會留意自己所做的事情,然後試著加以改善。
設想你正在參加—個會議。你或許在想︰這個會議沒完沒了,還不如去編寫程序呢。而Dave和Andy會想,他們為什麼要開會,是否有其他方式能夠取代開會,而且一些事情可以自動決定,以使開會推後。然後他們就會這樣去做。
這就是Davef口Andy的思考方式。開會並不是阻礙他們編程的事情。開會就是編程,而且是能夠改善的編程。我之所以知道他們這樣的思考方式,是因為這是書中的第二條建議︰思考你的工作。
想像一下吧,他們就這樣思考了幾年,很快就積累了一套解決方案。而他們叉在隨後的幾年中在工作中使用這些解決方案,放棄了其中太過困難或者不能總是產生結果的解決方案。于是,這樣的做法就基本上定義了Pragmatic(注重實效)的含義。現在他們又用了一、兩年來寫出他們的解決方案。你也許會想,這些信息肯定是座“金礦”。完全正確。
……
網路書店
類別
折扣
價格
-
新書87折$256