代码整洁之道:程序员的职业素养(中文版) PDF 高清电子书 免费下载 完整版 在线阅读- 高飞网
代码整洁之道

代码整洁之道
程序员的职业素养

中文版
[美]罗伯特 C. 马丁(Robert C. Martin)
编码

本书是编程大师 Bob 大叔 40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。

必读引言1    
第1章 专业主义 7    
1.1 清楚你要什么 8    
1.2 担当责任 8    
1.3 首先,不行损害之事 10    
1.3.1 不要破坏软件功能 10    
1.3.2 不要破坏结构 12    
1.4 职业道德 13    
1.4.1 了解你的领域 14    
1.4.2 坚持学习 16    
1.4.3 练习 16    
1.4.4 合作 17    
1.4.5 辅导 17    
1.4.6 了解业务领域 17    
1.4.7 与雇主/客户保持一致 18    
1.4.8 谦逊 18    
1.5 参考文献 18    
第2章 说“不” 19    
2.1 对抗角色 21    
2.2 高风险时刻 24    
2.3 要有团队精神 25    
2.3.1 试试看 26    
2.3.2 消极对抗 28    
2.4 说“是”的成本 30    
2.5 如何写出好代码 35    
第3章 说“是” 37    
3.1 承诺用语 39    
3.1.1 识别“缺乏承诺”的征兆 40    
3.1.2 真正的承诺听起来是怎样的 40    
3.1.3 总结 43    
3.2 学习如何说“是” 43    
3.2.1 “试试”的另一面 43    
3.2.2 坚守原则 44    
3.3 结论 46    
第4章 编码 47    
4.1 做好准备 48    
4.1.1 凌晨3点写出的代码 49    
4.1.2 焦虑时写下的代码 50    
4.2 流态区 51    
4.2.1 音乐 52    
4.2.2 中断 53    
4.3 阻塞 53    
4.4 调试 55    
4.5 保持节奏 57    
4.5.1 知道何时应该离开一会 58    
4.5.2 开车回家路上 58    
4.5.3 洗澡 58    
4.6 进度延迟 58    
4.6.1 期望 59    
4.6.2 盲目冲刺 59    
4.6.3 加班加点 60    
4.6.4 交付失误 60    
4.6.5 定义“完成” 61    
4.7 帮助 61    
4.7.1 帮助他人 61    
4.7.2 接受他人的帮助 62    
4.7.3 辅导 62    
4.8 参考文献 63    
第5章 测试驱动开发 65    
5.1 此事已有定论 66    
5.2 TDD的三项法则 67    
5.3 TDD的优势 68    
5.3.1 确定性 68    
5.3.2 缺陷注入率 68    
5.3.3 勇气 69    
5.3.4 文档 69    
5.3.5 设计 70    
5.3.6 专业人士的选择 70    
5.4 TDD的局限 70    
5.5 参考文献 71    
第6章 练习 73    
6.1 引子 73    
6.1.110的22次方 74    
6.1.2 转变 75    
6.2 编程柔道场 76    
6.2.1 卡塔 77    
6.2.2 瓦萨 78    
6.2.3 自由练习 78    
6.3 自身经验的拓展 79    
6.3.1 开源 79    
6.3.2 关于练习的职业道德 79    
6.4 结论 80    
6.5 参考文献 80    
第7章 验收测试 81    
7.1 需求的沟通 81    
7.1.1 过早精细化 83    
7.1.2 迟来的模糊性 83    
7.2 验收测试 85    
7.2.1 “完成”的定义 85    
7.2.2 沟通 88    
7.2.3 自动化 88    
7.2.4 额外工作 89    
7.2.5 验收测试什么时候写,由谁来写 90    
7.2.6 开发人员的角色 90    
7.2.7 测试的协商与被动推进 91    
7.2.8 验收测试和单元测试 93    
7.2.9 图形界面及其他复杂因素 93    
7.2.10 持续集成 94    
7.3 结论 95    
第8章 测试策略 97    
8.1 QA应该找不到任何错误 98    
8.1.1 QA也是团队的一部分 98    
8.1.2 需求规约定义者 98    
8.1.3 特性描述者 98    
8.2 自动化测试金字塔 98    
8.2.1 单元测试 99    
8.2.2 组件测试 100    
8.2.3 集成测试 100    
8.2.4 系统测试 101    
8.2.5 人工探索式测试 102    
8.3 结论 102    
8.4 参考文献 102    
第9章 时间管理 103    
9.1 会议 104    
9.1.1 拒绝 104    
9.1.2 离席 105    
9.1.3 确定议程与目标 105    
9.1.4 立会 106    
9.1.5 迭代计划会议 106    
9.1.6 迭代回顾和DEMO展示 107    
9.1.7 争论/反对 107    
9.2 注意力点数 108    
9.2.1 睡眠 108    
9.2.2 咖啡因 108    
9.2.3 恢复 109    
9.2.4 肌肉注意力 109    
9.2.5 输入与输出 109    
9.3 时间拆分和番茄工作法 110    
9.4 要避免的行为 110    
9.5 死胡同 111    
9.6 泥潭 111    
9.7 结论 112    
第10章 预估 113    
10.1 什么是预估 115    
10.1.1 承诺 115    
10.1.2 预估 115    
10.1.3 暗示性承诺 117    
10.2 PERT 118    
10.3 预估任务 120    
10.4 大数定律 122    
10.5 结论 123    
10.6 参考文献 123    
第11章 压力 125    
11.1 避免压力 127    
11.1.1 承诺 127    
11.1.2 保持整洁 127    
11.1.3 危机中的纪律 128    
11.2 应对压力 128    
11.2.1 不要惊慌失措 128    
11.2.2 沟通 129    
11.2.3 依靠你的纪律原则 129    
11.2.4 寻求帮助 129    
11.3 结论 129    
第12章 协作 131    
12.1 程序员与人 133    
12.1.1 程序员与雇主 133    
12.1.2 程序员与程序员 135    
12.2 小脑 137    
12.3 结论 138    
第13章 团队与项目 139    
13.1 只是简单混合吗 139    
13.1.1 有凝聚力的团队 140    
13.1.2 如何管理有凝聚力的团队 141    
13.1.3 项目承包人的困境 142    
13.2 结论 142    
13.3 参考文献 143    
第14章 辅导、学徒期与技艺 145    
14.1 失败的学位教育 145    
14.2 辅导 146    
14.2.1 DIGI—COMPI,我的第一台计算机 146    
14.2.2 高中时代的ECP—18148    
14.2.3 非常规辅导 150    
14.2.4 艰难的锤炼 150    
14.3 学徒期 151    
14.3.1 软件学徒期 152    
14.3.2 现实情况 154    
14.4 技艺 154    
14.5 结论 155    
附录 工具 157