罗伯特?C.马丁(鲍勃大叔)因在技术人群中声名远播的Clean系列在全球圈粉无数。本书为其烫手新作,旨在为广大工程师指明一条通向匠师之路,包括饱经洗砺的敏捷技术实践,如何通过持续的努力提高专业素养,软件可用之上的目标与技能,以及如何激发团队最大潜能,等等。本书融会几本经典著作的精髓,将"整洁”方法论推向至高境界—软件开发者有责任维护世界正常运行,而"人”才是"技术”的决定者。 本书共分三部分,前两部分用实例阐释TDD在敏捷软件中的运用,以及验收测试、协同编程等常被忽视的敏捷侧面与具体策略,还探讨了颇有价值的软件设计方案相关话题;第Ⅲ部分拔地而起,直接提出十条堪称金玉良言的"规劝”,以帮助程序员成为团队基石。
罗伯特?C.马丁,自1970年起从事程序员职业。他与人合办了cleancoders.com网站,为软件开发者提供在线视频培训服务。他还创办了Uncle Bob咨询有限公司,为分布于世界各地的大公司提供软件咨询、培训和技能培养服务。同时,他也供职于芝加哥的软件咨询企业8th Light,任大匠(Master Craftsman)一职。
罗伯特?C.马丁,自1970年起从事程序员职业。他与人合办了cleancoders.com网站,为软件开发者提供在线视频培训服务。他还创办了Uncle Bob咨询有限公司,为分布于世界各地的大公司提供软件咨询、培训和技能培养服务。同时,他也供职于芝加哥的软件咨询企业8th Light,任大匠(Master Craftsman)一职。
第 1 章 匠艺 ................................................................................... 25
第Ⅰ部分 纪律 ................................................................................ 35
极限编程 .............................................................................................................................. 37
生命之环 ...................................................................................................................... 38
测试驱动开发 ...................................................................................................................... 39
重构 ...................................................................................................................................... 40
简单设计 .............................................................................................................................. 41
协同编程 .............................................................................................................................. 41
验收测试 .............................................................................................................................. 42
第 2 章 测试驱动开发 ....................................................................... 43
概述 ...................................................................................................................................... 44
软件 .............................................................................................................................. 46
TDD 三法则 ................................................................................................................. 47
第四法则 ...................................................................................................................... 58
基础知识 .............................................................................................................................. 59
简单示例 ...................................................................................................................... 60
栈 .................................................................................................................................. 60
质因数 .......................................................................................................................... 76
保龄球局 ...................................................................................................................... 86
小结 .................................................................................................................................... 103
第3章 高级测试驱动开发 ................................................................... 105
排序示例一 ........................................................................................................................ 106
排序示例二 ........................................................................................................................ 111
卡壳 .................................................................................................................................... 119
安排、行动、断言 ............................................................................................................ 127
进入 BDD ................................................................................................................... 128
有限状态机 ................................................................................................................ 129
再谈 BDD ................................................................................................................... 131
测试替身 ............................................................................................................................ 132
DUMMY ..................................................................................................................... 135
STUB .......................................................................................................................... 139
SPY ............................................................................................................................. 142
MOCK ........................................................................................................................ 145
FAKE .......................................................................................................................... 148
TDD 不确定性原理 ................................................................................................... 150
伦敦派对决芝加哥派 ................................................................................................ 163
确定性问题 ................................................................................................................ 164
伦敦派 ........................................................................................................................ 165
芝加哥派 .................................................................................................................... 166
融合 ............................................................................................................................ 167
架构 .................................................................................................................................... 167
小结 .................................................................................................................................... 169
第 4 章 设计 ................................................................................. 171
测试数据库 ........................................................................................................................ 172
测试 GUI ............................................................................................................................ 174
GUI 输入 .................................................................................................................... 177
测试模式 ............................................................................................................................ 178
专为测试创建子类 .................................................................................................... 179
自励 ............................................................................................................................ 180
HUMBLE OBJECT .................................................................................................... 181
测试设计 ............................................................................................................................ 184
脆弱测试问题 ............................................................................................................ 184
一一对应 .................................................................................................................... 185
打破对应关系 ............................................................................................................ 187
VIDEO STORE .......................................................................................................... 188
具体 vs 通用 ............................................................................................................... 207
转换优先顺序 .................................................................................................................... 208
{} → NIL(无代码→空值) .................................................................................. 210
NIL → CONSTANT(空值→常量) ..................................................................... 211
UNCONDITIONAL → SELECTION(无条件→条件选择) .............................. 212
VALUE → LIST(值→列表) ............................................................................... 213
STATEMENT → RECURSION(语句→递归) ................................................... 213
SELECTION → ITERATION(条件选择→遍历) .............................................. 214
VALUE → MUTATED VALUE(值→改变了的值) ........................................... 214
示例:斐波那契数列 ................................................................................................ 215
变换模式优先顺序假设............................................................................................. 119
小结 .................................................................................................................................... 220
第 5 章 重构 .................................................................................. 221
什么是重构 ........................................................................................................................ 223
基础工具包 ........................................................................................................................ 224
重命名 ........................................................................................................................ 224
方法抽取 .................................................................................................................... 225
变量抽取 .................................................................................................................... 226
字段抽取 .................................................................................................................... 228
魔方 ............................................................................................................................ 241
纪律 .................................................................................................................................... 241
测试 ............................................................................................................................ 242
快速测试 .................................................................................................................... 242
打破紧密的一一对应关系 ......................................................................................... 242
持续重构 .................................................................................................................... 243
果断重构 .................................................................................................................... 243
让测试始终能通过 .................................................................................................... 243
留条出路 .................................................................................................................... 244
小结 .................................................................................................................................... 245
第 6 章 简单设计 .......................................................................... 247
YAGNI ................................................................................................................................ 250
用测试覆盖 ........................................................................................................................ 252
覆盖 ............................................................................................................................ 254
渐近目标 .................................................................................................................... 255
设计? ........................................................................................................................ 256
但还有更多好处 ........................................................................................................ 256
充分表达 ............................................................................................................................ 257
底层抽象 .................................................................................................................... 259
再论测试:问题的后半部分 ..................................................................................... 260
尽量减少重复 .................................................................................................................... 261
意外重复 .................................................................................................................... 262
尺寸尽量小 ........................................................................................................................ 263
简单设计 .................................................................................................................... 263
第 7 章 协同编程 ............................................................................ 265
第 8 章 验收测试 ............................................................................ 269
纪律 .................................................................................................................................... 272
持续构建 ............................................................................................................................ 273
第 Ⅱ 部 分 标准 .............................................................................. 275
你的新 CTO ....................................................................................................................... 276
第 9 章 生产力 ............................................................................. 277
永不交付 S**T ................................................................................................................... 278
成本低廉的变更适应能力 ................................................................................................ 280
时刻准备着 ........................................................................................................................ 282
稳定的生产力 .................................................................................................................... 283
第 10 章 质量 .............................................................................. 285
持续改进 ............................................................................................................................ 286
免于恐惧 ............................................................................................................................ 287
极致质量 ............................................................................................................................ 288
我们不把问题留给 QA ...................................................................................................... 289
QA 之疾 ...................................................................................................................... 290
QA 什么问题也不会发现 .................................................................................................. 290
测试自动化 ........................................................................................................................ 291
自动化测试与用户界面 .................................................................................................... 292
测试用户界面 .................................................................................................................... 293
第 11 章 勇气 ................................................................................ 295
我们彼此补位 .................................................................................................................... 296
靠谱的预估 ........................................................................................................................ 298
你得说不 ............................................................................................................................ 300
持续努力学习 .................................................................................................................... 301
教导 .................................................................................................................................... 302
第Ⅲ部分 操守 ............................................................................... 303
第一个程序员 .................................................................................................................... 304
75 年 ................................................................................................................................... 305
书呆子与救世主 ................................................................................................................ 310
榜样和恶棍 ........................................................................................................................ 313
我们统治世界 .................................................................................................................... 314
灾难 .................................................................................................................................... 315
誓言 .................................................................................................................................... 317
第 12 章 伤害 ................................................................................ 319
首先,不造成伤害 ............................................................................................................ 320
对社会无害 ................................................................................................................ 321
对功能的损害 ............................................................................................................ 323
对结构无害 ................................................................................................................ 326
柔软 ............................................................................................................................ 327
测试 ............................................................................................................................ 329
最好的作品 ........................................................................................................................ 330
使其正确 .................................................................................................................... 331
什么是好结构 ............................................................................................................ 332
艾森豪威尔矩阵 ........................................................................................................ 334
程序员是利益相关者 ................................................................................................ 336
尽力而为 .................................................................................................................... 338
可重复证据 ........................................................................................................................ 340
狄克斯特拉 ................................................................................................................ 340
正确性证明 ................................................................................................................ 341
结构化编程 ................................................................................................................ 343
功能分解 .................................................................................................................... 346
TDD ............................................................................................................................ 347
第 13 章 集成 ................................................................................ 351
小周期 ................................................................................................................................ 352
源代码控制的历史 .................................................................................................... 352
GIT .............................................................................................................................. 358
短周期 ........................................................................................................................ 360
持续集成 .................................................................................................................... 361
分支与切换 ................................................................................................................ 362
持续部署 .................................................................................................................... 364
持续构建 .................................................................................................................... 365
持续改进 ............................................................................................................................ 366
测试覆盖率 ................................................................................................................ 367
突变测试 .................................................................................................................... 368
语义稳定性 ................................................................................................................ 368
清理 ............................................................................................................................ 369
创造 ............................................................................................................................ 370
保持高生产力 .................................................................................................................... 370
拖慢速度的因素 ........................................................................................................ 371
解决注意力分散问题 ................................................................................................ 373
时间管理 .................................................................................................................... 376
第 14 章 团队合作 .......................................................................... 379
组团工作 ............................................................................................................................ 380
开放式/虚拟办公室 ................................................................................................... 380
诚实和合理地预估 ............................................................................................................ 382
谎言 ............................................................................................................................ 383
诚实、准确、精确 .................................................................................................... 384
故事 1:载体 ............................................................................................................. 385
故事 2:pCCU ........................................................................................................... 387
教训 ............................................................................................................................ 389
准确度 ........................................................................................................................ 389
精确度 ........................................................................................................................ 391
汇总 ............................................................................................................................ 393
诚实 ............................................................................................................................ 394
尊重 .................................................................................................................................... 396
永不停止学习 .................................................................................................................... 397