重构20年经典升级,《重构(第2版)》中文版,震撼上市!

简介: 1999年,世界软件开发大师,ThoughtWorks首席科学家马丁·福勒(Martin Fowler)出版《重构:改善既有代码的设计》,读者反馈甚佳,重构(Refactoring)的理念被广泛接纳,成为编程的词汇表中不可或缺的部分。

1999年,世界软件开发大师,ThoughtWorks首席科学家马丁·福勒(Martin Fowler)出版《重构:改善既有代码的设计》,读者反馈甚佳,重构(Refactoring)的理念被广泛接纳,成为编程的词汇表中不可或缺的部分。 2019年,恰逢《重构》一书推出20周年,马丁重新梳理他对重构理念的最新思考,不朽经典重磅升级。《重构:改善既有代码的设计(第2版)》中文版将于近日震撼上市!


《重构:改善既有代码的设计(第2版)》

ISBN:9787115508645

作者:[美]马丁·福勒(Martin Fowler)

译者:熊节,林从羽


《重构》一书被奉为软件开发界的经典之作,因其凝聚了软件开发社区专家多年摸索而获得的宝贵经验,书中所蕴涵的思想和精华,值得反复咀嚼,常读常新。《重构》第一版在我国累计发售11个版本,累计销售超20万册,包括英文影印版、英文评注版、精装版、中文简装版等,其受欢迎程度可见一斑。《重构(第2版)》英文版一经上市,即位列美亚计算机类图书畅销榜排名第一。



这本备受关注的第2版在第1版的基础上做了全面修订,反映了编程领域业已发生的许多变化。第2版中介绍的重构列表更加内聚,并用JavaScript语言重写了代码范例。此外,第2版中还新增了与函数式编程相关的重构范例,旨在教会读者如何在没有类的环境下开展重构。新版沿袭了第1版的结构,依次解释什么是重构,为什么要重构,如何通过“坏味道”识别出需要重构的代码,以及如何在实践中成功实施重构(无论用的是什么编程语言)。《重构(第2版)》中文版已在京东、当当、亚马逊等网络书店同步开启图书预售。


本书作者马丁·福勒已出版过7本软件开发方面的经典书籍。2000年3月,他成为ThoughtWorks的首席科学家。马丁同时是一位作家、演说者、咨询师和泛软件开发领域的意见领袖。他致力于改善企业级的软件设计,对优秀的设计以及支撑优秀设计的工程实践孜孜以求,在重构、面向对象分析设计、模式、XP和UML等领域都有卓越贡献。


谈到本书该如何阅读,本书最大的一个特点清晰揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了 60 多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少了开发过程中的风险。


本书的另一个特点是,为了方便读者阅读,作者特别绘制了本书的内容组织结构图,指出了全书12章内容之间的相关关系,如图所示。读者可以根据自己的背景或需要,随意挑选阅读。



什么是重构


所谓重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。重构是一种经千锤百炼形成的有条不紊的程序整理方法,可以最大限度地减小整理过程中引入错误的概率。本质上说,重构就是在代码写好之后改进它的设计。


“在代码写好之后改进它的设计”这种说法有点儿奇怪。在软件开发的大部分历史时期,大部分人相信应该先设计而后编码:首先得有一个良好的设计,然后才能开始编码。但是,随着时间流逝,人们不断修改代码,于是根据原先设计所得的系统, 整体结构逐渐衰弱。代码质量慢慢沉沦,编码工作从严谨的工程堕落为胡砍乱劈的随性行为。


“重构”正好与此相反。哪怕手上有一个糟糕的设计,甚至是一堆混乱的代码, 我们也可以借由重构将它加工成设计良好的代码。重构的每个步骤都很简单,甚至显得有些过于简单:只需要把某个字段从一个类移到另一个类,把某些代码从一个函数 拉出来构成另一个函数,或是在继承体系中把某些代码推上推下就行了。但是,聚沙成塔,这些小小的修改累积起来就可以根本改善设计质量。这和一般常见的“软件会 慢慢腐烂”的观点恰恰相反。


有了重构以后,工作的平衡点开始发生变化。作者发现设计不是在一开始完成的, 而是在整个开发过程中逐渐浮现出来。在系统构筑过程中,作者学会了如何不断改进设计。这个“构筑-设计”的反复互动,可以让一个程序在开发过程中持续保有良好的设计。


对本书的赞誉


过去20年,《重构》一直是我案头常备的图书。每次重读,仍有感悟。对我而言,《重构》的意义不只在于指导代码重构,更在于让人从一开始就知道什么是好的代码,并且尽量写出没有“坏味道”的代码。Martin Fowler这次对本书进行的重构,体现了近年来编程领域的一些思潮变化。看来,既有设计,永远有改进空间。

 

——韩磊,《代码整洁之道》译者

 

重构早就成了软件开发从业者本能的一部分,每个IDE都内置了重构功能,每个程序员都定期重构自己的代码。技能上通常不再是问题,但是相对于当年第1版的读者,现在的程序员对于重构这个思想从何而来以及各种细节反而更陌生,这时候就更值得重新读一下这本书了。

 

——霍炬,PRESS.one CTO

 

有人说Martin Fowler改变了人类开发软件的模式,这一点也不过分,从《模式分析》《UML精粹》《领域特定语言》,到这本《重构》新版可以看得出来,他的每一本书都是软件开发人员必备的案头读物。此前他参与的“敏捷宣言”,更是引领了整个行业对敏捷开发的认识,一直到现在。Martin Fowler是我们QCon全球软件开发大会进入中国时的第一届讲师,也是在那次会议上,他让国内的技术社区领略了国际领先的开发模式,从此“敏捷”二字开始风行国内IT领域。

 

今年是QCon进入中国的第十个年头,我特别开心看到Martin Fowler又重写《重构》这本影响深远的书,他几乎完全替换了书中所引用的模式案例,并且基于现在用户的习惯,采用了JavaScript语言来做说明语言。数十年来他始终保持对技术的关注,对创新的热情,乐此不疲,这是Martin最令人敬佩的地方,也是非常值得我们每一个技术人学习的地方。

 

——霍泰稳,极客邦科技、InfoQ中国创始人兼CEO

 

当今软件开发的速度越来越快,带来的技术债也越来越多,我从CSDN自身的网站系统开发中充分认识到重构的重要性——如果我们的程序员能理解和掌握重构的原则和方法,我们的系统就不会有这么多沉重的债务。真正本质的东西是不变的,《重构》在出版20年后推出了第2版,再次证明:越本质的越长久,也越重要。衷心期待更多的新一代开发者能从这本书吸收营养,开发出好味道的系统。

 

——蒋涛,CSDN创始人、董事长

 

最早看到本书第1版的英文原版并决定引进国内,算起来已经是20年前的事了。虽然时间是最强大的重构工具,连书里的示例语言都从Java变成JavaScript了,但书中的理念和实践的价值并没有随时间流逝。这充分证明,即使在日新月异的IT技术世界里,不变的东西其实还是有的,这种书才是真正的经典,是技术人员应该优先研读并一读再读的。

 

——刘江,美团技术学院院长

 

“对于软件工程师来说,重构,并不是额外的工作,它就是编码本身。”直到我读过《重构》,并经过练习,才真正理解到这一点。真希望自己在20多年前写第一个软件时,就能读到这本书,从而能节省出大量调试或重复研究代码的时间。20年过去了,《重构》这本书也根据当前软件设计及相关工具的发展进行了一部分修订,更加贴近当前的软件开发者。希望更多的软件工程师能够应用这一技术节省出更多的时间。

 

——乔梁,腾讯高级管理顾问、《持续交付2.0》作者

 

重构是一项被低估了的技术能力。说起来,重构就是“不改变外在行为,而提高代码质量”这么简简单单的一句话,但其带来的影响却非常深远:它使我们在解决问题时可以放心地“先做对,再做好”——这种思路本身就可以极大地简化问题;它使我们消除无谓的意气之争——“所谓好,就是更少的坏味道”。我由衷地认为,切实地读懂了《重构》的程序员,在能力上都会获得一个数量级的提升。

 

——徐昊,ThoughtWorks中国区技术总监

 

当我还是编程菜鸟,想写出漂亮的代码而不得门道的时候,《重构》这本书就告诉了我,其实高手的代码也不是一次书就的,只要按这本书里的方法去做,谁都能把代码写得那么好;当我还是职场新人,没来得及写出太多垃圾代码的时候,这本书就教会了我,应该去追求编写人能够读懂的而不是仅机器能够读懂的代码。多年以后的某时某刻,当你编码自信而敏捷,因代码清晰而受人尊重时,你会庆幸读过这本书,你也会有些遗憾,应该再早一点去读这本书。无论过去了多少年,这本书,一直值得推荐。

 

——阎华,京东7FRESH架构师

 

在大获成功的《重构》第1版里,Martin Fowler传达的核心理念是:代码会随时间流逝而烂掉。写得再好的程序代码,若是发布了就一直保持原样,照样会风化、破碎乃至分崩离析。这是客观规律,避免这种命运的唯一出路是持续重构。要想成为高素质的软件工程师,必须认识这一点。

 

20年之后,Martin Fowler用现身说法证明,经典的《重构》也会变得不合时宜,也需要重构。如今,不但讲解语言从Java改成了JavaScript,原来的重构示例也做了很多调整,新增了15个示例,更重要的是,新版示例不再那么“面向对象”,应当会收获更广泛的读者群。

 

软件不死,重构不歇。

 

——余晟,《代码整洁之道:程序员的职业素养》译者

 

随着软件项目日积月累,系统维护成本变得越来越高昂是互联网团队共同面临的问题。用户在使用互联网系统的过程中,遇到的各类运行错误或者不可访问故障,以及开发团队面临的历史系统不可维护问题,很多时候是代码初次开发过程中各种细小的不规范引起的。持续优化已有代码是维护系统生命力最好的方法。《重构》是我推荐团队必读的技术图书之一。

 

——杨卫华(Tim Yang),微博研发副总经理

 

软件行业已经高速发展数十年,就好似一个崭新的城市,从一个个村屋矮房到高楼林立。而你的代码库就好比你手下的一个房间、一幢平房、一条街道、一片社区乃至是一座摩天大楼。作为一本经典的软件开发书籍,《重构》告诉我们的不仅仅是如何推倒重建、清理、装修,而是像一个规划师一样从目的、成本、手段、价值等综合维度来思考重构的意义。在开发业务的同时,《重构》常伴我左右,警醒我如何写出更有价值的软件。

 

——阴明,掘金社区创始人

 

重构,是一个优秀程序员的基本功,因为没人能保证其代码不随时间腐化,而重构会让代码重新焕发活力。整个软件行业对重构的认知始于Martin Fowler的《重构》,这本书让人们知道了“代码的坏味道”,见识到了“小步前行”的威力。时隔20年,Martin Fowler重新执笔改写《重构》,20年间的思维变迁就体现在这本书里,在第1版中,我们看到的是当时方兴未艾的面向对象,而第2版则透露出函数式编程的影响。如果说有什么程序员进阶秘笈,那就是不要错过Martin Fowler的任何一部著作,更何况是已经由时间证明过的重要著作《重构》的新版!

 

——郑晔,火币网首席架构师

 

如果看完本书,就兴冲冲地想要找一些代码来重构,那你可能就陷入某种“自嗨”之中了。

 

了解本书中列出的那些坏味道,不仅仅可以发现代码中的那些坏味道,更可以鞭策自己以及整个团队:在一开始的时候,就不写或者少些那种味道很坏的代码。还应该激励自己,深入地理解架构、理解业务、理解需求,减少因设计失误而导致徒劳无益地反复重构。

 

重构也是有成本的,所以应该思考如何降低重构的成本。我推荐每一个程序员都来学习“重构”这门手艺。因为学习《重构》,是为了减少“重构”!

 

——庄表伟,开源社理事、执行长,华为云DevCloud高级产品经理



图书基本信息:


书名:重构:改善既有代码的设计(第2版)

ISBN:978-7-115-50864-5

精装版定价:168.00

作者:[美]马丁·福勒(Martin Fowler)

译者:熊节 林从羽

出版日期:2019年3月


更多信息,请访问人民邮电出版社异步社区:https://www.epubit.com/


关于异步社区

异步社区(www.epubit.com)由人民邮电出版社出品,是国内领先的IT专业图书社区。异步社区于2015年8月上线运营,依托于人民邮电出版社30余年的IT专业优质出版资源和编辑策划团队,致力于优质学习内容的出版和分享,为读者提供优质学习内容,为作译者提供优质出版服务,实现作者与读者在线交流互动,实现传统出版与数字出版的融合发展。


关于人民邮电出版社

人民邮电出版社成立于1953年10月,是工业和信息化部主管的大型科技出版社。目前图书出版领域涵盖信息技术、少儿、经管、摄影、集邮、旅游、心理学、军事、家庭教育等,其中计算机类图书的零售市场占有率持续占据首位,在传统的编程开发、数据库、软件测试,以及新兴的热点领域如人工智能、大数据、前端技术,都占据了图书市场的领导地位。

相关文章
|
3月前
|
开发框架 Android开发 iOS开发
跨平台开发的双重奏:Xamarin在不同规模项目中的实战表现与成功故事解析
【8月更文挑战第31天】在移动应用开发领域,选择合适的开发框架至关重要。Xamarin作为一款基于.NET的跨平台解决方案,凭借其独特的代码共享和快速迭代能力,赢得了广泛青睐。本文通过两个案例对比展示Xamarin的优势:一是初创公司利用Xamarin.Forms快速开发出适用于Android和iOS的应用;二是大型企业借助Xamarin实现高性能的原生应用体验及稳定的后端支持。无论是资源有限的小型企业还是需求复杂的大公司,Xamarin均能提供高效灵活的解决方案,彰显其在跨平台开发领域的强大实力。
41 0
|
3月前
|
开发者 CDN 监控
【破局·提速】当Vaadin遇上性能怪圈:开发者的智慧较量与极速加载的实战秘籍!
【8月更文挑战第31天】本文详细介绍了优化Vaadin应用性能的方法,特别是提高加载速度的实战技巧。首先分析性能瓶颈,如服务器响应时间和数据库查询效率等;然后通过代码优化、数据分页与急切加载技术减少资源消耗;接着利用资源压缩合并及CDN加速,进一步提升加载速度;最后通过持续性能监控和测试确保优化效果。通过综合应用这些策略,可显著改善用户体验。
74 0
|
3月前
|
开发者 API Windows
从怀旧到革新:看WinForms如何在保持向后兼容性的前提下,借助.NET新平台的力量实现自我进化与应用现代化,让经典桌面应用焕发第二春——我们的WinForms应用转型之路深度剖析
【8月更文挑战第31天】在Windows桌面应用开发中,Windows Forms(WinForms)依然是许多开发者的首选。尽管.NET Framework已演进至.NET 5 及更高版本,WinForms 仍作为核心组件保留,支持现有代码库的同时引入新特性。开发者可将项目迁移至.NET Core,享受性能提升和跨平台能力。迁移时需注意API变更,确保应用平稳过渡。通过自定义样式或第三方控件库,还可增强视觉效果。结合.NET新功能,WinForms 应用不仅能延续既有投资,还能焕发新生。 示例代码展示了如何在.NET Core中创建包含按钮和标签的基本窗口,实现简单的用户交互。
66 0
|
4月前
|
算法 数据处理 开发者
LabVIEW开发为何仿制(致敬)经典成熟软件
LabVIEW开发为何仿制(致敬)经典成熟软件
28 2
|
6月前
|
存储 监控 Go
万字心路历程:从十年老架构决定重构开始
不论是从产品演进,还是从开发体验,原有iLogtail架构已经严重制约了其快速发展。因此,对iLogtail的架构进行升级已经迫在眉睫。
1149 11
|
新零售 人工智能 供应链
七星创客/艾倍生/推三返一/系统开发方案项目/开发案例/规则玩法/源码程序
  所谓新零售即是个人、企业以互联网为依托,通过运用大数据、人工智能等先进技术手段,对商品的生产、流通与销售过程进行升级改造,进而重塑业态结构与生态圈,并对线上服务、线下体验以及现代物流进行深度融合的零售新模式。
|
6月前
|
自然语言处理 监控 搜索推荐
佛萨奇2.0/3.0Metaforce原力元宇宙系统开发步骤逻辑丨方案项目丨案例设计丨成熟技术丨源码功能
佛萨奇(VoZaChi)是一个虚拟助手系统,其发展至2.0和3.0版本会有一些特定需求和逻辑
|
机器学习/深度学习 人工智能 运维
工程与产品的胜利,深度剖析ChatGPT和聪明地设计基础架构
工程与产品的胜利,深度剖析ChatGPT和聪明地设计基础架构
149 0
|
人工智能 JSON 自然语言处理
谈谈ChatGPT的低成本“平替”实现路线(1)
谈谈ChatGPT的低成本“平替”实现路线
541 0
|
JSON 编解码 自然语言处理
谈谈ChatGPT的低成本“平替”实现路线(2)
谈谈ChatGPT的低成本“平替”实现路线
788 0