《程序员修炼之道 通向务实的最高境界 第2版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)David Thomas(大卫·托马斯),Andrew Hunt(安德鲁·亨特)
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2020
  • ISBN:9787121384356
  • 页数:313 页
图书介绍:

第1章 务实的哲学 1

1人生是你的 2

提示3:你有权选择 3

2我的源码被猫吃了 3

提示4:提供选择,别找借口 5

3软件的熵 6

提示5:不要放任破窗 7

4石头做的汤和煮熟的青蛙 9

提示6:做推动变革的催化剂 10

提示7:牢记全景 10

5够好即可的软件 11

提示8:将质量要求视为需求问题 12

6知识组合 14

提示9:对知识组合做定期投资 16

提示10:批判性地分析你读到和听到的东西 18

7交流! 20

提示11:英语就是另一门编程语言 20

提示12:说什么和怎么说同样重要 23

提示13:把文档嵌进去,而不要栓在表面 24

第2章 务实的方法 27

8优秀设计的精髓 28

提示14:优秀的设计比糟糕的设计更容易变更 28

9 DRY——邪恶的重复 30

提示15:DRY——不要重复自己 31

提示16:让复用变得更容易 39

10正交性 40

提示17:消除不相关事物之间的影响 41

11可逆性 48

提示18:不设最终决定 50

提示19:放弃追逐时尚 50

12曳光弹 51

提示20:使用曳光弹找到目标 53

13原型与便签 57

提示21:用原型学习 58

14领域语言 60

提示22:靠近问题域编程 61

15估算 67

提示23:通过估算来避免意外 67

提示24:根据代码不断迭代进度表 72

第3章 基础工具 74

16纯文本的威力 75

提示25:将知识用纯文本保存 76

17 Shell游戏 79

提示26:发挥Shell命令的威力 80

18加强编辑能力 82

提示27:游刃有余地使用编辑器 82

19版本控制 85

提示28:永远使用版本控制 87

20调试 90

提示29:去解决问题,而不是责备 91

提示30:不要恐慌 91

提示31:修代码前先让代码在测试中失败 93

提示32:读一下那些该死的出错信息 93

提示33:“select”没出问题 97

提示34:不要假设,要证明 97

21文本处理 99

提示35:学习一门文本处理语言 99

22工程日记 101

第4章 务实的偏执 103

提示36:你无法写出完美的软件 103

23契约式设计 104

提示37:通过契约进行设计 107

24死掉的程序不会说谎 113

提示38:尽早崩溃 114

25断言式编程 115

提示39:使用断言去预防不可能的事情 115

26如何保持资源的平衡 119

提示40:有始有终 119

提示41:在局部行动 122

27不要冲出前灯范围 127

提示42:小步前进——由始至终 127

提示43:避免占卜 129

第5章 宁弯不折 130

28解耦 131

提示44:解耦代码让改变更容易 132

提示45:只管命令不要询问 133

提示46:不要链式调用方法 135

提示47:避免全局数据 137

提示48:如果全局唯一非常重要,那么将它包装到API中 137

29在现实世界中抛球杂耍 139

30变换式编程 149

提示49:编程讲的是代码,而程序谈的是数据 151

提示50:不要囤积状态,传递下去 156

31继承税 162

提示51:不要付继承税 165

提示52:尽量用接口来表达多态 167

提示53:用委托提供服务:“有一个”胜过“是一个” 167

提示54:利用mixin共享功能 169

32配置 170

提示55:使用外部配置参数化应用程序 170

第6章 并发 174

33打破时域耦合 175

提示56:通过分析工作流来提高并发性 176

34共享状态是不正确的状态 179

提示57:共享状态是不正确的状态 180

提示58:随机故障通常是并发问题 186

35角色与进程 187

提示59:用角色实现并发性时不必共享状态 188

36黑板 193

提示60:使用黑板来协调工作流 195

第7章 当你编码时 198

37听从蜥蜴脑 199

提示61:倾听你内心的蜥蜴 201

38巧合式编程 204

提示62:不要依赖巧合编程 207

39算法速度 210

提示63:评估算法的级别 214

提示64:对估算做测试 214

40重构 216

提示65:尽早重构,经常重构 219

41为编码测试 220

提示66:测试与找Bug无关 221

提示67:测试是代码的第一个用户 222

提示68:既非自上而下,也不自下而上,基于端对端构建 225

提示69:为测试做设计 228

提示70:要对软件做测试,否则只能留给用户去做 230

42基于特性测试 231

提示71:使用基于特性的测试来校验假设 231

43出门在外注意安全 238

提示72:保持代码简洁,让攻击面最小 241

提示73:尽早打上安全补丁 243

44事物命名 245

提示74:好好取名;需要时更名 249

第8章 项目启动之前 251

45需求之坑 252

提示75:无人确切知道自己想要什么 252

提示76:程序员帮助人们理解他们想要什么 253

提示77:需求是从反馈循环中学到的 254

提示78:和用户一起工作以便从用户角度思考 255

提示79:策略即元数据 256

提示80:使用项目术语表 259

46处理无法解决的难题 260

提示81:不要跳出框框思考——找到框框 261

47携手共建 264

提示82:不要一个人埋头钻进代码中 267

提示83:敏捷不是一个名词;敏捷有关你如何做事 267

48敏捷的本质 267

第9章 务实的项目 271

49务实的团队 272

提示84:维持小而稳定的团队 272

提示85:排上日程以待其成 274

提示86:组织全功能的团队 276

50椰子派不上用场 277

提示87:做能起作用的事,别赶时髦 279

提示88:在用户需要时交付 281

51 务实的入门套件 281

提示89:使用版本控制来驱动构建、测试和发布 282

提示90:尽早测试,经常测试,自动测试 283

提示91:直到所有的测试都已运行,编码才算完成 283

提示92:使用破坏者检测你的测试 285

提示93:测试状态覆盖率,而非代码覆盖率 286

提示94:每个Bug只找一次 286

提示95:不要使用手动程序 287

52取悦用户 288

提示96:取悦用户,而不要只是交付代码 289

提示97:在作品上签名 290

53傲慢与偏见 290

跋 292

提示98:先勿伤害 293

提示99:不要助纣为虐 294

参考文献 295

练习的参考答案 297

译者跋 312