具体描述
Kent Beck、Martin Fowler、Michael C. Feathers、Robert C. Martin、Joshua Kerievsky、Gerard Meszaros等大师们的传世著作为如何提升编程技艺和代码质量提供了思想和原则上的指导,本书则为实践和融合这些思想、原则提供了过程和方法上指导。本书通过编程操练的方式讲述了如何用TDD(测试驱动开发)的方法来驯服烂代码,通过结对编程的对话形式展示了驯服烂代码的完整过程,将驯服烂代码所需要的思想、态度、习惯、方法和技艺完全融入编程操练实践中,是目前最具实践指导意义的驯服烂代码的著作。
全书共20章,分为四个部分:第一部分(第1~10章)首先通过测试后行和测试先行两种方法完成了一个名为“码农酒店”(世界时钟)的编程操练题目,然后对这两种方法进行对比,引出了烂代码的概念,读者能非常直观看出哪一种方法更容易写出烂代码。第二部分(第11~15章)通过一个名为Trivia(答题闯关游戏)的经典编程操练题目详细讲述了驯服一段烂代码的过程,首先讲解了代码腐臭的识别和记录,然后讲解了如何通过一系列的重构来清除这些腐臭。第三部分(第16~18章)通过三个编程操练题目详述了编写真正的单元测试的过程,首先讲解了用提取接口的办法编写Stub来进行单元测试,以及用子类化并覆写方法的办法编写Mock来进行单元测试,然后讲解了如何将被测类与文件系统之间的这种不适用于单元测试的耦合,转化为被测类与字符串之间这种适合与单元测试的耦合。第四部分(第19~20章)总结了驯服烂代码的步骤及方法,首先讲解了TDD开发方法的一种实现:I-EPP-TR方法,该方法中的全面重构的概念对传统的重构概念进行了扩展,然后讨论了如何才能将前面所讨论的良好的编程方法形成习惯并固化下来。
作者简介
伍斌(英文名Ben)
资深软件技术专家,匠艺程序员,拥有超过20年的软件行业工作经验,在软件开发、软件测试、敏捷项目管理和软件开发咨询等诸多方面都有深厚的造诣,专注于测试驱动开发、驯服烂代码及编程操练,积累了丰富的经验。
活跃于Agile China、Scrum Gathering、敏捷之旅、CSDN、中国软件测试大会和InfoQ等组织和社区,曾经多次在这些平台举办的各种技术大会上发表与敏捷、测试和驯服烂代码相关的主题演讲,深受欢迎。此外,他还是 “北京设计模式学习组”(http://www.bjdp.org)的组织者和开创者,这是国内首家中文公益编程操练社区,他全身心投入到社区的运营中,希望能帮到尽可能多的程序员。有《测试驱动数据库开发》和《优质代码》等译著。
目录信息
序
前言
致谢
第1章 刻舟求剑的文档 1
第2章 按图索骥地编写代码 7
第3章 写main()方法测试一下 17
第4章 调试一下 24
第5章 用TDD重做编程操练题目 33
第6章 消除假数据所带来的重复代码 40
第7章 让下一个测试足够有意思 46
第8章 嗅出代码“腐臭”和新的测试点 55
第9章 测试后行 vs 测试先行 64
第10章 何谓“烂代码” 68
第11章 记录所闻到的“腐臭” 75
第12章 用测试描绘用户意图 89
第13章 分而治之——釜底抽薪 105
第14章 分而治之——抛砖引玉 118
第15章 打扫战场 134
第16章 分而测之——编写Stub及提取接口 169
第17章 分而测之——编写Mock及子类化并覆写方法 191
第18章 真正的单元测试 217
第19章 驯服烂代码的步骤:IePpTr 232
第20章 习惯出自专注、长期和用心的结对操练 238
附录A 编程操练简介 244
附录B 怎样在Windows系统中搭建编程操练环境 246
附录C 怎样在OS X系统中搭建编程操练环境 251
附录D 怎样在Linux系统中搭建编程操练环境 256
· · · · · · (收起)
读后感
用户评价
“收到《驯服烂代码》这本书,我抱着试试看的心态翻阅,结果一发不可收拾。这本书的内容,可以说是一部非常“写实”的软件开发“史诗”。作者以一种非常“侦探推理”的方式,引导读者一步步深入到代码的“犯罪现场”,去寻找那些导致“烂代码”产生的“元凶”。他没有简单地列举问题,而是通过生动的故事和深入的分析,揭示了那些隐藏在代码深处的“阴谋”。我尤其赞赏他对于“代码遗留问题”的解读,他把这些问题比喻成“技术雪崩”,形象地说明了如果不及时处理,它们最终会对整个项目造成毁灭性的打击。书中还提供了大量的“代码诊断工具”和“修复方案”,这些方案都非常接地气,并且易于实施。我试着运用书中的一些方法来处理我当前项目中的一些“遗留代码”,效果出奇地好。而且,作者不仅仅关注“技术层面”的解决方案,他还深入探讨了“人文层面”的问题,比如如何与团队成员沟通,如何建立良好的代码文化,这些都对提升整体开发效率至关重要。这本书的语言风格非常独特,既有技术的深度,又不失文学的趣味。它让我感觉,不仅仅是在学习一门技术,更是在体验一种“代码的艺术”。我感觉,这本书就像是一本“代码修炼秘籍”,能够帮助我们提升自己的“内功”,从而更好地应对各种复杂的代码挑战。它让我意识到,驯服烂代码,不仅仅是为了让代码变得更优雅,更是为了让整个开发过程变得更顺畅、更愉快。”
“我最近读到一本名为《驯服烂代码》的书,虽然书名听起来有点……嗯,粗暴,但内容绝对让我眼前一亮。首先,我得说,作者的切入点非常独特。他并没有像很多技术书籍那样,一上来就堆砌各种复杂的理论和晦涩的术语,而是从一个非常接地气的角度,描绘了我们日常开发中遇到的那些让人抓狂的“烂代码”场景。你懂的,就是那种你接手一个项目,看到前人留下的代码,简直想原地爆炸的那种。书里举的例子都非常真实,比如那些命名混乱的变量,冗长的函数,还有那些“魔术数字”和“意大利面条式”的代码。作者并没有批判,而是以一种非常友好的方式,一步步地剖析这些问题的根源,以及它们是如何一步步蚕食项目的健康度的。我尤其喜欢他讲解的“代码味觉”这个概念,虽然听起来有点抽象,但实际读起来,你能感受到那种通过代码的“气味”来判断其健康程度的能力,这是一种非常直观且实用的判断标准。整本书的语言风格也很生动,不像枯燥的教程,更像是一位经验丰富的同行在分享他的心得体会,时不时还会冒出一些幽默的段落,让阅读过程一点都不枯燥。我感觉我自己在阅读的过程中,不自觉地就进入了那种“侦探”的角色,去“嗅探”代码中的问题。我发现,很多我之前觉得是“理所当然”的坏习惯,在这本书里被一一揭示,并提供了切实可行的解决方案。这本书的价值在于,它不仅教你如何“修复”,更重要的是,它让你“预知”并“避免”产生烂代码。”
“这是一本让我眼前一亮的书,书名《驯服烂代码》,虽然听起来有些直接,但内容绝对让你惊艳。作者以一种非常“哲学”的视角,探讨了软件开发中的一个核心问题:如何处理那些“不完美”的代码。他并没有一味地鼓吹“完美主义”,而是提出了一种更加务实和可持续的解决方案。我特别欣赏作者关于“渐进式重构”的论述,他认为,与其试图一次性解决所有问题,不如采取小步快跑的方式,逐步优化代码,减少风险。书中提供了一系列非常实用的“重构工具箱”,包含了各种能够帮助我们进行代码优化的技巧和策略。而且,作者还强调了“度量”的重要性,他认为,只有通过科学的度量,才能有效地识别问题,并评估改进的效果。我印象深刻的是关于“代码复杂度”的讨论,作者提出的几种度量方法,都非常直观易懂,并且能够帮助我们快速定位那些潜在的“高风险”代码区域。这本书的独特之处在于,它不仅仅是一本技术手册,更像是一本“思想启迪录”。它让我重新思考了“代码质量”的定义,以及如何在现实的项目环境中,找到一种平衡和妥协。我感觉,作者就像一位经验丰富的“代码治疗师”,能够帮助我们诊断出代码的“病症”,并开出最有效的“药方”。这本书的价值在于,它能够帮助我们建立一种更加健康和可持续的开发模式,让我们在处理复杂代码时,不再感到束手无策。”
“最近有幸读到一本叫做《驯服烂代码》的书,这真是一次非常令人振奋的阅读体验。书的结构安排非常巧妙,从宏观到微观,层层递进,让我对软件开发的深层问题有了全新的认识。作者以一种近乎“考古学”的严谨态度,深入挖掘了导致代码质量下降的根本原因。他不仅仅停留在表面的代码风格问题,而是触及到了团队协作、项目管理、甚至开发者心态等多个维度。我印象最深刻的是关于“技术债务”的章节,作者用大量的案例说明了技术债务是如何像滚雪球一样越积越大,最终压垮整个项目。他提出的“技术债务度量模型”和“偿还技术债务路线图”非常有条理,为我们提供了一个清晰的思路来管理和逐步消除这些隐患。而且,这本书最大的亮点在于,它不是一本纯粹的“如何写好代码”的书,更像是一本“如何成为一名优秀的软件工程师”的指南。它教会我们如何去理解代码的生命周期,如何与团队成员进行更有效的沟通,如何制定合理的重构计划,以及如何在压力之下保持冷静和专业。书中对“代码评审”的论述也相当到位,他不仅仅强调了找出bug的重要性,更强调了通过代码评审来促进知识分享和提升团队整体能力。我感觉阅读这本书的过程,就像是在参加一个高级研讨会,能够听到来自行业顶尖专家对软件工程的深刻见解。它促使我反思自己在过去的项目中存在的不足,并且给了我明确的方向去改进。这本书的价值,在于它能够从根本上提升一个工程师的思维高度和解决问题的能力。”
“这本书,说实话,我一开始是被它的书名吸引的——《驯服烂代码》。听起来就充满了挑战和乐趣,而且我一直觉得,很多时候,编程的乐趣并不在于写出那些优雅精巧的新代码,而在于如何去“拯救”那些看起来已经奄奄一息的老代码。这本书果然没让我失望。它并没有给我灌输那些听起来很厉害但用起来很鸡肋的“高大上”的原则,而是从最基础、最贴近实际工作的角度,一步步地教你如何去识别、理解、以及最终“驯服”那些你遇到的“烂代码”。我特别喜欢作者在书中描绘的“代码恶魔”形象,它可能隐藏在每一个被忽略的细节里,但只要你掌握了正确的方法,就能将它驱逐出境。书中有很多关于“代码重构”的实操技巧,而且这些技巧都是非常实用的,比如如何安全地提取函数、如何优雅地替换继承、如何避免过度的抽象等等。最让我惊喜的是,作者还提供了一些非常巧妙的“代码清洁”小工具和思维模型,能够帮助我们快速定位问题的核心,并且有针对性地进行改进。阅读过程中,我感觉自己就像一个经验丰富的“代码医生”,能够诊断出各种“疑难杂症”,并且一一对症下药。这本书的语言风格也很幽默风趣,读起来一点都不枯燥,充满了智慧的闪光点。它让我意识到,写出“好代码”固然重要,但能够“驯服烂代码”的能力,更是衡量一个工程师成熟度的重要标志。我感觉,这本书彻底改变了我对代码维护和优化的看法,让我看到了其中的无限可能性。”
TDD 传教书籍,读起来轻松,但是感觉在现实世界中有点不接地气的样子
有点啰嗦。是意图编程,但意图是怎么来的,没能让我读的时候直接感受到。
还不错吧,用案例的方法介绍测试驱动开发的益处,东西不太多,内容略显啰嗦,感觉更适合现场讲座而不是书本的形式~
关键词:代码的意图
TDD的布道者, 非常精细的实际操作演示了 Refactoring to Patterns