书籍详情
程序员修炼之道:从小工到专家(20周年纪念版 第2版 英文版)
作者:[美] 大卫・托马斯,安德鲁・亨特 著
出版社:电子工业出版社
出版时间:2020-04-01
ISBN:9787121387098
定价:¥108.00
购买这本书可以去
内容简介
《程序员修炼之道》之所以在全球范围内广泛传播,被一代代开发者奉为圭臬,盖因它可以创造出真正的价值:或编写出更好的软件,或探究出编程的本质,而所有收获均不依赖于特定语言、框架和方法。时隔 20 年的新版,经过全面的重新选材、组织和编写,覆盖哲学、方法、工具、设计、解耦、并发、重构、需求、团队等务实话题的最佳实践及重大陷阱,以及易于改造、复用的架构技术。本书极具洞察力与趣味性,适合从初学者到架构师的各阶层读者潜心研读或增广见闻。
作者简介
亨特(AndyHunt)是一位热切的木匠和音乐家,但奇怪的是,人们更需要作为顾问的他。他的工作领域包括电信、银行、金融服务、公共服务,以及一些更奇特的领域,比如医学成像、图形艺术、Internet服务。在于1994年移居美国前,Dave在英国创立了一家通过ISO9001认证的软件公司,为世界各地的客户开发成熟、定制的软件项目。Dave现在是一位独立顾问,居住在德克萨斯州的达拉斯。 亨特(AndyHunt)是一位热切的木匠和音乐家,但奇怪的是,人们更需要作为顾问的他。他的工作领域包括电信、银行、金融服务、公共服务,以及一些更奇特的领域,比如医学成像、图形艺术、Internet服务。在于1994年移居美国前,Dave在英国创立了一家通过ISO9001认证的软件公司,为世界各地的客户开发成熟、定制的软件项目。Dave现在是一位独立顾问,居住在德克萨斯州的达拉斯。
目录
Contents
1. A Pragmatic Philosophy 1
Topic 1. It s Your Life . . . . . . . . . . . . . . . . . . . . 2
Topic 2. The Cat Ate My Source Code . . . . . . . . . . . . 3
Topic 3. Software Entropy . . . . . . . . . . . . . . . . . . 6
Topic 4. Stone Soup and Boiled Frogs . . . . . . . . . . . . 8
Topic 5. Good-Enough Software . . . . . . . . . . . . . . 11
Topic 6. Your Knowledge Portfolio . . . . . . . . . . . . . 13
Topic 7. Communicate! . . . . . . . . . . . . . . . . . . 19
2. A Pragmatic Approach 27
Topic 8. The Essence of Good Design . . . . . . . . . . . . 28
Topic 9. DRY―The Evils of Duplication . . . . . . . . . . . 30
Topic 10. Orthogonality . . . . . . . . . . . . . . . . . . . 39
Topic 11. Reversibility . . . . . . . . . . . . . . . . . . . 47
Topic 12. Tracer Bullets . . . . . . . . . . . . . . . . . . . 50
Topic 13. Prototypes and Post-it Notes . . . . . . . . . . . . 56
Topic 14. Domain Languages . . . . . . . . . . . . . . . . 59
Topic 15. Estimating . . . . . . . . . . . . . . . . . . . . 65
3. The Basic Tools 73
Topic 16. The Power of Plain Text . . . . . . . . . . . . . . 74
Topic 17. Shell Games . . . . . . . . . . . . . . . . . . . 78
Topic 18. Power Editing . . . . . . . . . . . . . . . . . . . 81
Topic 19. Version Control . . . . . . . . . . . . . . . . . . 84
Topic 20. Debugging . . . . . . . . . . . . . . . . . . . . 88
Topic 21. Text Manipulation . . . . . . . . . . . . . . . . 97
Topic 22. Engineering Daybooks . . . . . . . . . . . . . . 100
4. Pragmatic Paranoia 103
Topic 23. Design by Contract . . . . . . . . . . . . . . . 104
Topic 24. Dead Programs Tell No Lies . . . . . . . . . . . 112
Topic 25. Assertive Programming . . . . . . . . . . . . . . 115
Topic 26. How to Balance Resources . . . . . . . . . . . . 118
Topic 27. Don t Outrun Your Headlights . . . . . . . . . . 125
5. Bend, or Break 129
Topic 28. Decoupling . . . . . . . . . . . . . . . . . . . 130
Topic 29. Juggling the Real World . . . . . . . . . . . . . 137
Topic 30. Transforming Programming . . . . . . . . . . . 147
Topic 31. Inheritance Tax . . . . . . . . . . . . . . . . . 158
Topic 32. Configuration . . . . . . . . . . . . . . . . . . 166
6. Concurrency 169
Topic 33. Breaking Temporal Coupling . . . . . . . . . . . 170
Topic 34. Shared State Is Incorrect State . . . . . . . . . . 174
Topic 35. Actors and Processes . . . . . . . . . . . . . . 181
Topic 36. Blackboards . . . . . . . . . . . . . . . . . . . 187
7. While You Are Coding 191
Topic 37. Listen to Your Lizard Brain . . . . . . . . . . . . 192
Topic 38. Programming by Coincidence . . . . . . . . . . . 197
Topic 39. Algorithm Speed . . . . . . . . . . . . . . . . . 203
Topic 40. Refactoring . . . . . . . . . . . . . . . . . . . 209
Topic 41. Test to Code . . . . . . . . . . . . . . . . . . . 214
Topic 42. Property-Based Testing . . . . . . . . . . . . . 224
Topic 43. Stay Safe Out There . . . . . . . . . . . . . . . 231
Topic 44. Naming Things . . . . . . . . . . . . . . . . . 238
8. Before the Project 243
Topic 45. The Requirements Pit . . . . . . . . . . . . . . 244
Topic 46. Solving Impossible Puzzles . . . . . . . . . . . . 252
Topic 47. Working Together . . . . . . . . . . . . . . . . 256
Topic 48. The Essence of Agility . . . . . . . . . . . . . . 259
9. Pragmatic Projects 263
Topic 49. Pragmatic Teams . . . . . . . . . . . . . . . . 264
Topic 50. Coconuts Donn t Cut It . . . . . . . . . . . . . . 270
Topic 51. Pragmatic Starter Kit . . . . . . . . . . . . . . 273
Topic 52. Delight Your Users . . . . . . . . . . . . . . . . 280
Topic 53. Pride and Prejudice . . . . . . . . . . . . . . . 282
Postface 285
Bibliography 289
Possible Answers to the Exercises 293
Index 307
1. A Pragmatic Philosophy 1
Topic 1. It s Your Life . . . . . . . . . . . . . . . . . . . . 2
Topic 2. The Cat Ate My Source Code . . . . . . . . . . . . 3
Topic 3. Software Entropy . . . . . . . . . . . . . . . . . . 6
Topic 4. Stone Soup and Boiled Frogs . . . . . . . . . . . . 8
Topic 5. Good-Enough Software . . . . . . . . . . . . . . 11
Topic 6. Your Knowledge Portfolio . . . . . . . . . . . . . 13
Topic 7. Communicate! . . . . . . . . . . . . . . . . . . 19
2. A Pragmatic Approach 27
Topic 8. The Essence of Good Design . . . . . . . . . . . . 28
Topic 9. DRY―The Evils of Duplication . . . . . . . . . . . 30
Topic 10. Orthogonality . . . . . . . . . . . . . . . . . . . 39
Topic 11. Reversibility . . . . . . . . . . . . . . . . . . . 47
Topic 12. Tracer Bullets . . . . . . . . . . . . . . . . . . . 50
Topic 13. Prototypes and Post-it Notes . . . . . . . . . . . . 56
Topic 14. Domain Languages . . . . . . . . . . . . . . . . 59
Topic 15. Estimating . . . . . . . . . . . . . . . . . . . . 65
3. The Basic Tools 73
Topic 16. The Power of Plain Text . . . . . . . . . . . . . . 74
Topic 17. Shell Games . . . . . . . . . . . . . . . . . . . 78
Topic 18. Power Editing . . . . . . . . . . . . . . . . . . . 81
Topic 19. Version Control . . . . . . . . . . . . . . . . . . 84
Topic 20. Debugging . . . . . . . . . . . . . . . . . . . . 88
Topic 21. Text Manipulation . . . . . . . . . . . . . . . . 97
Topic 22. Engineering Daybooks . . . . . . . . . . . . . . 100
4. Pragmatic Paranoia 103
Topic 23. Design by Contract . . . . . . . . . . . . . . . 104
Topic 24. Dead Programs Tell No Lies . . . . . . . . . . . 112
Topic 25. Assertive Programming . . . . . . . . . . . . . . 115
Topic 26. How to Balance Resources . . . . . . . . . . . . 118
Topic 27. Don t Outrun Your Headlights . . . . . . . . . . 125
5. Bend, or Break 129
Topic 28. Decoupling . . . . . . . . . . . . . . . . . . . 130
Topic 29. Juggling the Real World . . . . . . . . . . . . . 137
Topic 30. Transforming Programming . . . . . . . . . . . 147
Topic 31. Inheritance Tax . . . . . . . . . . . . . . . . . 158
Topic 32. Configuration . . . . . . . . . . . . . . . . . . 166
6. Concurrency 169
Topic 33. Breaking Temporal Coupling . . . . . . . . . . . 170
Topic 34. Shared State Is Incorrect State . . . . . . . . . . 174
Topic 35. Actors and Processes . . . . . . . . . . . . . . 181
Topic 36. Blackboards . . . . . . . . . . . . . . . . . . . 187
7. While You Are Coding 191
Topic 37. Listen to Your Lizard Brain . . . . . . . . . . . . 192
Topic 38. Programming by Coincidence . . . . . . . . . . . 197
Topic 39. Algorithm Speed . . . . . . . . . . . . . . . . . 203
Topic 40. Refactoring . . . . . . . . . . . . . . . . . . . 209
Topic 41. Test to Code . . . . . . . . . . . . . . . . . . . 214
Topic 42. Property-Based Testing . . . . . . . . . . . . . 224
Topic 43. Stay Safe Out There . . . . . . . . . . . . . . . 231
Topic 44. Naming Things . . . . . . . . . . . . . . . . . 238
8. Before the Project 243
Topic 45. The Requirements Pit . . . . . . . . . . . . . . 244
Topic 46. Solving Impossible Puzzles . . . . . . . . . . . . 252
Topic 47. Working Together . . . . . . . . . . . . . . . . 256
Topic 48. The Essence of Agility . . . . . . . . . . . . . . 259
9. Pragmatic Projects 263
Topic 49. Pragmatic Teams . . . . . . . . . . . . . . . . 264
Topic 50. Coconuts Donn t Cut It . . . . . . . . . . . . . . 270
Topic 51. Pragmatic Starter Kit . . . . . . . . . . . . . . 273
Topic 52. Delight Your Users . . . . . . . . . . . . . . . . 280
Topic 53. Pride and Prejudice . . . . . . . . . . . . . . . 282
Postface 285
Bibliography 289
Possible Answers to the Exercises 293
Index 307
猜您喜欢