编辑点评:
Clean Code中文版,Java代码实现,鲍勃大叔作品,程序员必读,汇聚编程大师数十年编程生涯的心得体会,阐释如何解决软件开发人员、项目经理及软件项目领导们所面临的棘手的问题。
内容简介
本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。
作者简介
作者介绍 Robert C. Martin,软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C Report前主编,被后辈程序员尊称为“Bob大叔”。20世纪7 0年代初成为职业程序员,后创办Object Mentor公司并任总裁。Martin还是一名多产的作家,至今已发表数百篇文章、论文和博客文章。除本书外,还著有《代码整洁之道》《敏捷软件开发:原则、模式和实践》《UML:Java程序员指南》等。他创办了cleancoders.com网站,专为软件开发人员提供教育视频。 译者介绍 余晟,混迹软件开发和互联网行业多年,目前在沪江网负责研发和架构管理工作。业余喜爱阅读、思考,关注工程师的全面发展,探索更聪明的技术方案,乐于帮助外界更多理解IT行业的约束、规律和习惯。 章显洲,蚂蚁金服高级项目专家,业余以技术翻译作为个人修炼与回馈软件开发社区的途径。自2009年来,翻译和与人合译多本技术管理书籍,偶尔也会出现在技术社区聚会上作一些分享。近年来主要致力于蚂蚁金服基础设施和架构升级方面的项目集管理。
圈内影响
“毫无疑问,Bob大叔的这本新作又一次抬高了专业程序员的门槛。在书中,他从交互管理、时间管理、压力管理、合作方法以及工具选择等诸多方面,阐述了他对一名专业程序员的期望。Bob并不囿于对T D D和AT D D的传授,他不仅解释了每一名自视为专业人士的程序员所需要知道的东西,而且指出了他们在历练尚浅的软件开发职业生涯中需要不断精进的内容。” —— Markus G?rtner,it-agile公司软件开发者 “有一些技术书颇具启发和教益,有一些则读来轻松喜悦且富有趣味,但很少有技术书籍能够同时兼具所有这四个特色。我感觉Ma r t i n所有的书都可归入此列。本书也不例外。阅读、学习和守持书中的教诲,你将可以信心满满地把自己训练为软件专业人士。” —— George Bullock,微软公司程序经理 “如果计算机科学学位要求有‘毕业后必读书单’,本书当在其列。在现实的职业生涯中,糟糕的代码不会因学期结束就此消失,程序员也不会因加班加点开夜车编码便可获得A级评分,而雪上加霜的是,你还必须抽出精力与人打交道。就算你是个编程高手,也并不一定就可以称为专业人士。本书描述了迈向专业程序员的修炼旅程……而且阅读起来确实异常有趣。” —— Jeff Overvey,伊利诺伊大学厄本那-香槟分校 “本书远不只是给出了一套规则或指导方针,它还包含了无数来之不易的智慧和知识,这些宝贵财富通常只有经历过多年的试错,历经由初级学徒修炼成为大师级工匠的整个过程才能获得。如果你期望自己能成为软件专业人士,那么本书不容错过。” —— R. L. Bogetti,Snap-on公司高级软件工程师
代码整洁之道程序员的职业素养PDF预览
图书目录
目录
必读引言 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.1 10的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展示 10
原文摘录
负阴抱阳,知行合一
师者,所以传道授业解惑也。”Rartin,软件开发社区中亲切地称他为Bob大叔,正是这样一位明师2003年,他的《敏捷软件开发:原则、模式与实践》(下称ASD)在国内上市。我那时进入软件开发行业刚刚一两年,这本书真可谓是及时雨。在精读全书和细心对照书中案例练习后,我感觉自己在面向对象设计方面的功力有了比较明显的提升。那时因工作环境所限,身边没有能够手把手给予技术辅导的导师,因此,那时在我心中Bob大叔无疑就是一盏指路明灯。后来在网上找到了不少Bob大叔的演讲PPT,沿着链接,又找到了 Object Mentor公司其他一些软件开发专家的演讲PPT和博客,我如饥似渴地阅读揣摩。现在回头想来,正是在这个阶段我开始建立起“编程技艺”的视角。
时间过得很快,转眼就到了2010年,不觉中我已在软件开发的多个领域工作了近10年。2010年,Bob大叔的《代码整洁之道》一上市,我马上给自己和项目团队订了好几本。在为ASD所写的序中,Bob大叔写道:“最好的软件开发人员都知道一个秘密:美的东西比丑的东西创建起来更廉价,也更快捷。构建、维护一个美的软件系统所花费的时间、金钱都要少于丑的系统美的系统是灵活易于理解的,构建、维护它们就是一种快乐。”如果说ASD中更多的是OO设计思想和模式精髓的阐述,那么在《代码整洁之道》中,Bob大叔提供了更为详尽的微距视角,涉及“命名”、“函数”、“代码格式”、“异常处理”、“单元测试”等编码主题,巨细靡遗地向软件工匠们极力传授整洁编码的艺术,进一步向软件开发社区慷慨分享了他在探索“软件之美”旅途中的参证心得但是,细心的读者可以发现,在前述两本书中Bob大叔阐述的主体还是软件编码技术本身,作为一门技艺而言,止步于具体技术或曰“术”的层面,应该还未算得完整。后来,在 You Tube、 Slideshare和 Object Mentor等站点上,我看见Bob大叔有不少演讲趋向于聚焦在编程主体即软件开发者自身行为模式和特质层面上,就猜到他不久应该就会有此方面的新著推出。Bob大叔就是Bob大叔,在探索和分享软件技艺的路上,他内心怀有对软件开发社区发展责无旁贷的使命感果不其然,他将这些体悟浓缩在又一本新著上,这本书便是读者手上的这本《程序员的职业素养》本书阐述的是Bob大叔关于软件技艺主体的沉思,这些沉思并非是纯粹形而上的思辨推演,而是他对自身编程生涯的深刻反思和经验沉淀。在这本书中,Bob大叔并非是以高人一等的凌人盛气(事实上,他应该有这样的资格)大行说教而是毫不掩饰自己在职业生涯中曾犯下的各种错误和不堪往事,以这些案例为载体,现身说法,娓娓道来使自己得以转变和提升的种种“机锋”,并留有意味深长的空间,供读者自己结合自身状况进一步体悟提炼,而非给出硬梆梆的一堆结论。
这是何等的胸怀、格局和智慧按照传统的太极阴阳思维来看,如果说ASD和《代码整洁之道》中的内容是的求艺出便的.们的中的畴。“孤阴不生,独阳不长”,《老子》说“万物负阴而抱阳,充气以为和”。BC大叔这三本书为何都选择星云图片作为封面呢?我忽有顿悟。
严肃地选择以软件开发为自身职业方向的软件工程师(我更喜欢称为“轼件工匠”)们,如果你同我一样,此前感觉颇为受益于Bob大叔的谆谆教诲,那么请不要错过本书。将本书和ASD、《代码整洁之道》并列案头,三书互为参照一并静心细读、揣摩体悟、时时对照、检验调整,做到负阴抱阳、知行合一,相信定能渐入佳境本书本该早日完成面市,但因我个人方面的一些原因,翻译进度耽搁时日颇多,使我内心极为惴惴不安,这点必须向各位读者,尤其是Bob大叔的粉丝和在从事软件开发过程中遇到困顿境地的读者们,深深致歉!
感谢图灵公司的各位编辑对我的信任、宽容和指导。我对图灵公司在技术专
Comments