圖書簡介
該書主要講述了使代碼保持靈活並且易於改編和復用的各種架構技術,利用許多富有娛樂性的奇聞軼事、具有思想性的例子及有趣的類比。
內容簡介
《程式設計師修煉之道》(The Pragmatic Programmer)由一系列獨立的部分組成,涵蓋的主題從個人責任、職業發展,到用於使代碼保持靈活並且易於改編和復用的各種架構技術,利用許多富有娛樂性的奇聞軼事、具有思想性的例子及有趣的類比,全面闡釋了軟體開發的許多不同方面的最佳實踐和重大陷阱。
本書是The Pragmatic Programmer一書的評註版,力邀國內資深專家執筆,在英文原著的基礎上增加了中文點評和注釋,旨在融合二者之長,既保留經典的原創文字與味道,又以先行者的學研心得與實踐感悟,對讀者的閱讀和學習加以點撥,指明捷徑。
作品目錄
務實的哲學 1
CHAPTER1 A PRAGMATIC PHILOSOPHY(新增評註21條) 5
1 The Cat Ate My Source Code 6
2 Software Entropy 8
3 Stone Soup and Boiled Frogs 11
4 Good-Enough Software 14
5 Your Knowledge Portfolio 16
6 Communicate! 23
務實的方法 29
CHAPTER 2 A PRAGMATIC APPROACH(新增評註34條) 35
7 The Evils of Duplication 36
8 Orthogonality 44
9 Reversibility 54
10 Tracer Bullets 58
11 Prototypes and Post-it Notes 64
12 Domain Languages 68
13 Estimating 75
基本工具 83
CHAPTER 3 THE BASIC TOOLS(新增評註18條) 87
14 The Power of Plain Text 89
15 Shell Games 93
16 Power Editing 98
17 Source Code Control 103
18 Debugging 106
19 Text Manipulation 115
20 Code Generators 119
務實的執著 125
CHAPTER 4 PRAGMATIC PARANOIA(新增評註20條) 129
21 Design by Contract 130
22 Dead Programs Tell No Lies 142
23 Assertive Programming 144
24 When to Use Exceptions 148
25 How to Balance Resources 151
解耦合是王道 161
CHAPTER 5 BEND, OR BREAK(新增評註13條) 165
26 Decoupling and the Law of Demeter 166
27 Metaprogramming 172
28 Temporal Coupling 178
29 It’s Just a View 185
30 Blackboards 193
編碼時刻 199
CHAPTER 6 WHILE YOU ARE CODING(新增評註16條) 203
31 Programming by Coincidence 204
32 Algorithm Speed 209
33 Refactoring 216
34 Code That’s Easy to Test 221
35 Evil Wizards 230
需求與問題 233
CHAPTER 7 BEFORE THE PROJECT(新增評註22條) 237
36 The Requirements Pit 238
37 Solving Impossible Puzzles 249
38 Not Until You’re Ready 252
39 The Specification Trap 254
40 Circles and Arrows 257
團隊 261
CHAPTER 8 PRAGMATIC PROJECTS(新增評註13條) 265
41 PragmaticTeams 266
42 Ubiquitous Automation 272
43 Ruthless Testing 279
44 It’s All Writing 290
45 Great Expectations 298
46 Pride and Prejudice 300
APPENDIX A RESOURCES 303
Professional Soci¬¬eties 304
Building a Library 304
Internet Resources 308
Bibliography 316
APPENDIX B ANSWERS TO EXERCISES 321
INDEX 351