无名图书
收藏
Refactoring to Patterns
Joshua Kerievsky
出版社
Addison-Wesley Professional
出版时间
2004-08-15
ISBN
9780321213358
评分
★★★★★
书籍介绍
这本书最核心的洞见,是把'设计模式'从高高在上的静态标本,还原成'重构'这条演化长河里的一个个落脚点。作者不教你背诵模式,而是演示如何在已有代码的泥泞里,安全地一步步走向模式。读者反复提到:它像一座桥,把 Fowler 的《重构》和 GoF 的《设计模式》真正焊在一起。但争议也正源于此——它假设你已经读过这两本基础书,否则容易觉得晦涩;也有人质疑《重构》里已提及相关内容,本书必要性存疑。它适合那些'写过烂代码、见过设计腐化'的中级开发者:书中对设计如何一步步塌成'近乎天书'的描摹,几乎人人都能认领自己的项目。它不是入门手册,而是一本关于'如何在既有系统里优雅地补完设计'的实践指南。
AI导读
核心看点
本书核心在于将重构与设计模式有机结合,提供从现有代码向模式演进的具体路径。作者详细记录了超过二十种基于模式的复合重构序列,展示了如何通过一系列低级别重构操作,安全地将设计调整为符合特定模式的结构,而非直接套用模式。
书中强调渐进式改进的重要性,反对过度工程化。通过真实项目案例,演示了如何识别代码中的坏味道,并利用重构手段消除重复、简化复杂逻辑,使代码更清晰表达意图。这种自底向上的设计演化方法,有助于避免一开始就强行引入模式导致的架构僵化。
内容涉及测试驱动重构的实践,强调在重构过程中保持测试覆盖率以降低风险。作者指出,重构是手段,模式是目的,二者在软件演化中天然关联。通过本书,读者可学习如何在维护既有系统时,逐步提升代码质量,实现从混乱代码到整洁架构的过渡。
读者共识
读者普遍认为本书是连接《重构》与《设计模式》的重要桥梁,提供了从混乱代码向整洁架构演进的具体指导。尽管部分读者认为其原创性有限,但多数认可其在模式导向重构领域的独特价值。对于有经验的开发者,本书提供了宝贵的实践经验和思维启发,有助于提升代码质量和架构设计能力。
部分读者批评本书翻译质量较差,存在大量语病、标点错误及长句不通顺的问题,严重影响阅读体验。此外,书中部分源码缺失或存在错误,给读者实践带来障碍。建议读者谨慎选择版本,优先阅读英文原版,或结合其他优质资源进行学习,以避免因翻译和代码问题导致的学习挫折。
读者共识认为,本书不适合初学者入门,也不应作为重构或模式的唯一学习资源。其价值在于为有经验的开发者提供高级重构技巧,帮助其在实际项目中解决复杂代码问题。同时,读者强调应避免过度设计,坚持渐进式改进,将重构作为日常开发的一部分,而非一次性的大规模重构行动。
精彩摘录
"
设计不足产生原因有如下几种: 程序员没有时间,没有抽出时间,或者时间不允许进行重构; 程序员在何为好的软件设计方面知识不足; 程序员被要求在既有系统中快速地添加新功能; 程序员被迫同时进行太多项目。 随着时间的推移,设计不足的软件将变成昂贵、难以维护甚至无法维护的大麻烦。
"
"
数据结构的构造非常随意,甚至近乎不存在。任何东西都要与其他东西通信。所有重要的状态数据都可能是全局的。在状态信息被隔开的地方,需要通过错综复杂的后端通道杂乱地传递,以绕开系统的原有结构。 变量名和函数名信息量不足,甚至会起误导作用。函数可能使用大量全局变量以及定义模糊的冗长的参数列表。函数本身冗长,费解,完成多项毫无关联的任务。代码重复很多。控制流很难看清,难以找到来龙去脉。程序员的意图几乎无法理解。代码完全不可读,近乎难于破译的天书。代码中有很多经过多个维护者之手不断修修补补留下的明显印记,这些维护者几乎都没有理解自己的修补会造成怎样的后果。 虽然你开发的系统也许不会这么恐怖
"
"
减少或去除重复的地方,简化复杂之处,使代码更好地表达其意图。
"
用户评论
原创性的想法少,或者在某些工程实践中堵住了再来按图索骥会觉得好吧。个人更推荐Michael Feathers的那本Working Effectively with Legacy Code。
立意很好,可总觉得这书写得太晦涩了,另外书中本就残缺的源码竟然网上没有完整的免费下载!
连接起Martin Fowler之Refactoring与GoF之Design Patterns的桥梁。展现了如何在重构过程中运用模式的经验,不过模式类的书始终需要实践才能学得通。
在《重构》的基础上进一步阐述了重构和模式之间的关系,并提供了向模式重构的思路和步骤,非常赞的一本书!
重构一书里已有通过重构引入模式的内容,不觉得这本书有必要。
Addison-Wesley Professional的其他书籍
查看全部
Domain-Driven Design Distilled
Vaughn Vernon
Learning to Program
Steven Foote
Real-Time 3D Rendering with DirectX and HLSL
Varcholik, Paul
The CERT® C Coding Standard, Second Edition
Robert C. Seacord
OpenGL ES 3.0 Programming Guide
Dan Ginsburg
Advanced Programming in the UNIX Environment, 3rd Edition
W. Richard Stevens, Stephen A. Rago
求书
收藏
全部深度解读 →
主题书单
高分榜
最近更新