做《重构(第2版)》中⽂版的⾸批读者
作为程序员,要学习很多重要的主题。算法,数据结构,编程语⾔,数不胜数,代码重构也是其中必备技能之⼀。
今天⼩编推荐⼀本⽆敌厉害的书,接下来的很长时间你将被这本书刷屏,它将出现在各⼤畅销书排⾏榜内,这本书就是《重构(第2版)》。
它在世界范围内畅销不衰,被翻译为中、德、⽇、俄等众多语⾔。
这本经典书20年后重磅升级,更新内容超30%,更新了众多项⽬案例。
想要成为《重构(第2版)》中⽂版的⾸批读者,可以下滑到⽂末扫码申请四,我们将从报名的读者中选出50⼈,3⽉11⽇⾸批品鉴。同时京东、当当、天猫等各⼤书城已同步预售(点击⽹店名称可以直达购买)。
《重构:改善既有代码的设计(第2版)》作者:马丁·福勒(Martin Fowler)
01
《重构(第2版)》必读的四⼤理由
理由⼀:不可撼动的江湖地位
“重构”这个概念来⾃Smalltalk圈⼦,没多久就进⼊了其他语⾔阵营之中。由于重构是框架开发中不可缺少的⼀部分,所以当框架开发⼈员讨论⾃⼰的⼯作时,这个术语就诞⽣了。重构,⼀⾔以蔽之,就是在不改变外部⾏为的前提下,有条不紊地改善代码。多年前,正是《重构》原版的出版,使重构终于从编程⾼⼿们的⼩圈⼦⾛出,成为众多普通程序员⽇常开发⼯作中不可或缺的⼀部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、⽇等众多语⾔,在世界范围内畅销不衰。
《重构》⼀书⾃第1版问世⾄今,读者的反馈甚佳,重构的理念已经被⼴泛接纳,成为编程的词汇表中不可或缺的部分。然⽽,对于⼀本与编程相关的书⽽⾔,20年⼰经太漫长,因此作者感到,是时候回头重新修订这本书了。作者⼏乎重写了全书的每⼀页,但从其内涵⽽⾔,整本书⼜⼏乎没有改变。重构的精髓仍然⼀如既往;⼤部分关键的重构⼿法也⼤体不变。作者希望这次修订能帮助更多的读者学会如何有效地进⾏重构。
《重构(第2版)》英⽂版美亚计算机类图书畅销榜排名第⼀,中⽂版累计发售了11个版本,累计销售超20万册,分别是英⽂影印版、英⽂评注版、精装版、中⽂简装版等。
美亚榜单截图2⽉27⽇
《重构》凝聚了软件开发社区专家多年摸索⽽获得的宝贵经验,拥有不因时光流逝⽽磨灭的价值。今天,⽆论是重构本⾝,业界对重构的理解,还是开发⼯具对重构的⽀持⼒度,都与本书最初出版时不可同⽇⽽语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,⽽且往往能够常读常新。这本书在⾖瓣评分⾼达9.3分。
理由⼆:世界级软件开发⼤师的不朽经典
本书作者马丁·福勒(Martin Fowler),世界软件开发⼤师,ThoughtWorks的⾸席科学家。他是⼀位作家、演说者、咨询师和泛软件开发领域的意见领袖。他致⼒于改善企业级的软件设计,对优秀的设计以及⽀撑优秀设计的⼯程实践孜孜以求。他在重构、⾯向对象分析设计、模式、XP和UML等领域都有卓越贡献。
马丁·福勒(Martin Fowler)
马丁·福勒(Martin Fowler)
马丁·福勒在英格兰的沃尔索尔长⼤,去了玛丽皇后⽂法学校。1983年到2006年去了伦敦⼤学学院,获得了电⼦⼯程和计算机科学的学⼠学位(ENG)。毕业后他在在Coopers&Lybrand和⼀家名为Ptech的⼩型科技公司⼯作了⼀段时间,之后于1991年成为独⽴顾问。他于1994年搬到马萨诸塞州继续担任独⽴顾问,直到2000年加⼊ThoughtWorks。
在80年代初期开始从事软件⼯作,在80年代中期,他开始对⾯向对象开发的新世界感兴趣。开始专注于将对象引⼊商业信息系统,⾸先是与⼏家公司合作,然后作为独⽴顾问。在早期,这是使⽤Smalltalk和C ++,现在它是Java,C#和Ruby。每年他都会学到新东西,同时也发现过去的许多教训仍然适⽤。这项⼯作使他在⾯向对象分析和设计,UML,模式和敏捷开发⽅法⽅⾯发挥了主导作⽤。“
马丁·福勒已出版过七本软件开发⽅⾯的经典书籍。2000年3⽉,他成为ThoughtWorks的⾸席科学家。福勒同时是敏捷联盟的成员,于2001年,同其他16名合著者⼀起协助创作了“敏捷软件开发宣⾔”。
马丁·福勒在20多年的时间⾥完成了多本影响深远的著作,成为软件开发⾏业的⾥程碑。⽿熟能详的作品包括《重构》《分析模式》《领域特定语⾔》等经典著作。
理由三:20年后经典升级,更适合当下
重构,⼀⾔以蔽之,就是在不改变外部⾏为的前提下,有条不紊地改善代码。20 多年前,正是《重构:改善既有代码的设计》第1 版的出版,使重构终于从编程⾼⼿们的⼩圈⼦⾛出,成为众多普通程序员⽇常开发⼯作中不可或缺的⼀部分。如今,Martin Fowler 的《重构:改善既有代码的设计》⼀书已经成为全球有经验的程序员⼿中的利器,既可⽤来改善既有代码的设计、提升软件的可维护性,⼜可⽤于使既有代码更易理解、焕发出新的活⼒。
这本备受关注的第2 版在第1 版的基础上做了全⾯修订,反映了编程领域业已发⽣的许多变化。第2版中介绍的重构列表更加内聚,并⽤Java 语⾔重写了代码范例。此外,第2版中还新增了与函数式编程相关的重构范例,旨在教会读者如何在没有类的环境下开展重构。
新版沿袭了第1 版的结构,依次解释什么是重构,为什么要重构,如何通过“坏味道”识别出需要重构的代码,以及如何在实践中成功实施重构(⽆论⽤的是什么编程语⾔)。
这些变化很细微,但是涉及到⽅⽅⾯⾯。变化细微是因为书的基本结构没有改变。书的开篇是⼀个开放式的例⼦、⼀个章节的原则、⼀个“代码坏味道”的调查和⼀个测试的介绍。这本书的主体仍然是重构,原来有68个重构⽰例,作者保留了其中10个,新增了17个。
虽然书的整体结构变化不⼤,但是⽂字的变化却很多。每⼀个章节和重构⽰例都⼏乎是从零开始重写,作者⼏乎没有复制粘贴旧版中的⽂字。
针对内容更新,作者Martin Fowler曾说:”新版重新调整重⼼,将重点更少地放在类上。虽然这听起来可能就像将“提取⽅法”的名称更改为“提取函数”⼀样简单,但它确实需要重新思考每个重构的所有⽅⾯。我需要重新考虑动机,经常需要重新设计。⾄少结构需要详细审查,通常都需要完全重写。对此我没有做详细的记录,但我觉得引⽤⼀个相对简单的旧的重构,就要重新考虑两个重构。“
理由四:众多技术⼤咖⿍⼒推荐
本书译者熊节⽼师,在IT⾏业已经打拼了18年,在⾦融、零售、政府、电信、制造业等⾏业的信息化建设⽅⾯有着丰富经验,是中国IT业敏捷浪潮的领军⼈物。本书得到韩磊、霍炬、霍泰稳、蒋涛、刘江、乔梁、徐昊、阎华、余晟、杨卫华(Tim Yang)、阴明、郑晔、庄表伟等业内⼤咖联袂推荐。
下滑看看他们怎么说:
过去20年,《重构》⼀直是我案头常备的图书。每次重读,仍有感悟。对我⽽⾔,《重构》的意义不只在于指导代码重构,更在于让⼈从⼀开始就知道什么是好的代码,并且尽量写出没有“坏味道”的代码。Martin Fowler这次对本书进⾏的重构,体现了近年来编程领域的⼀些思潮变化。看来,既有设计,永远有改进空间。
——韩磊,《代码整洁之道》译者
重构早就成了软件开发从业者本能的⼀部分,每个IDE都内置了重构功能,每个程序员都定期重构⾃⼰的代码。技能上通常不再是问题,但是相对于当年第1版的读者,现在的程序员对于重构这个思想从何⽽来以及各种细节反⽽更陌⽣,这时候就更值得重新读⼀下这本书了。
——霍炬, CTO
有⼈说Martin Fowler改变了⼈类开发软件的模式,这⼀点也不过分,从《模式分析》《UML精粹》《
领域特定语⾔》,到这本《重构》新版可以看得出来,他的每⼀本书都是软件开发⼈员必备的案头读物。此前他参与的“敏捷宣⾔”,更是引领了整个⾏业对敏捷开发的认识,⼀直到现在。Martin Fowler是我们QCon全球软件开发⼤会进⼊中国时的第⼀届讲师,也是在那次会议上,他让国内的技术社区领略了国际领先的开发模式,从此“敏捷”⼆字开始风⾏国内IT领域。
今年是QCon进⼊中国的第⼗个年头,我特别开⼼看到Martin Fowler⼜重写《重构》这本影响深远的书,他⼏乎完全替换了书中所引⽤的模式案例,并且基于现在⽤户的习惯,采⽤了Java语⾔来做说明语⾔。数⼗年来他始终保持对技术的关注,对创新的热情,乐此不疲,这是Martin最令⼈敬佩的地⽅,也是⾮常值得我们每⼀个技术⼈学习的地⽅。
——霍泰稳,极客邦科技、InfoQ中国创始⼈兼CEO
当今软件开发的速度越来越快,带来的技术债也越来越多,我从CSDN⾃⾝的⽹站系统开发中充分认识到重构的重要性——如果我们的程序员能理解和掌握重构的原则和⽅法,我们的系统就不会有这么多沉重的债务。真正本质的东西是不变的,《重构》在出版20年后推出了第2版,再次证明:越本质的越长久,也越重要。衷⼼期待更多的新⼀代开发者能从这本书吸收营养,开发出好味道的系统。
——蒋涛,CSDN创始⼈、董事长
最早看到本书第1版的英⽂原版并决定引进国内,算起来已经是20年前的事了。虽然时间是最强⼤的重构⼯具,连书⾥的⽰例语⾔都从Java变成Java了,但书中的理念和实践的价值并没有随时间流逝。这充分证明,即使在⽇新⽉异的IT技术世界⾥,不变的东西其实还是有的,这种书才是真正的经典,是技术⼈员应该优先研读并⼀读再读的。
——刘江,美团技术学院院长
“对于软件⼯程师来说,重构,并不是额外的⼯作,它就是编码本⾝。”直到我读过《重构》,并经过练习,才真正理解到这⼀点。真希望⾃⼰在20多年前写第⼀个软件时,就能读到这本书,从⽽能节省出⼤量调试或重复研究代码的时间。20年过去了,《重构》这本书也根据当前软件设计及相关⼯具的发展进⾏了⼀部分修订,更加贴近当前的软件开发者。希望更多的软件⼯程师能够应⽤这⼀技术节省出更多的时间。
——乔梁,腾讯⾼级管理顾问、《持续交付2.0》作者
重构是⼀项被低估了的技术能⼒。说起来,重构就是“不改变外在⾏为,⽽提⾼代码质量”这么简简单单的⼀句话,但其带来的影响却⾮常深远:它使我们在解决问题时可以放⼼地“先做对,再做好”——这种思路本⾝就可以极⼤地简化问题;它使我们消除⽆谓的意⽓之争——“所谓好,就是更少的坏味道”。我由衷地认为,切实地读懂了《重构》的程序员,在能⼒上都会获得⼀个数量级的提升。
——徐昊,ThoughtWorks中国区技术总监
当我还是编程菜鸟,想写出漂亮的代码⽽不得门道的时候,《重构》这本书就告诉了我,其实⾼⼿的代码也不是⼀次书就的,只要按这本书⾥的⽅法去做,谁都能把代码写得那么好;当我还是职场新⼈,没来得及写出太多垃圾代码的时候,这本书就教会了我,应该去追求编写⼈能够读懂的⽽不是仅机器能够读懂的代码。多年以后的某时某刻,当你编码⾃信⽽敏捷,因代码清晰⽽受⼈尊重时,你会庆幸读过这本书,你也会有些遗憾,应该再早⼀点去读这本书。⽆论过去了多少年,这本书,⼀直值得推荐。
——阎华,京东7FRESH架构师
在⼤获成功的《重构》第1版⾥,Martin Fowler传达的核⼼理念是:代码会随时间流逝⽽烂掉。写得再好的程序代码,若是发布了就⼀直保持原样,照样会风化、破碎乃⾄分崩离析。这是客观规律,避免这种命运的唯⼀出路是持续重构。要想成为⾼素质的软件⼯程师,必须认识这⼀点。
要想成为⾼素质的软件⼯程师,必须认识这⼀点。
20年之后,Martin Fowler⽤现⾝说法证明,经典的《重构》也会变得不合时宜,也需要重构。如今,不但讲解语⾔从Java改成了Java,原来的重构⽰例也做了很多调整,新增了15个⽰例,更重要的是,新版⽰例不再那么“⾯向对象”,应当会收获更⼴泛的读者。
软件不死,重构不歇。
——余晟,《代码整洁之道:程序员的职业素养》译者
随着软件项⽬⽇积⽉累,系统维护成本变得越来越⾼昂是互联⽹团队共同⾯临的问题。⽤户在使⽤互联⽹系统的过程中,遇到的各类运⾏错误或者不可访问故障,以及开发团队⾯临的历史系统不可维护问题,很多时候是代码初次开发过程中各种细⼩的不规范引起的。持续优化已有代码是维护系统⽣命⼒最好的⽅法。《重构》是我推荐团队必读的技术图书之⼀。程序员培训机构去到极客时间
——杨卫华(Tim Yang),微博研发副总经理
软件⾏业已经⾼速发展数⼗年,就好似⼀个崭新的城市,从⼀个个村屋矮房到⾼楼林⽴。⽽你的代码库就好⽐你⼿下的⼀个房间、⼀幢平房、⼀条街道、⼀⽚社区乃⾄是⼀座摩天⼤楼。作为⼀本经典的软件开发书籍,《重构》告诉我们的不仅仅是如何推倒重建、清理、装修,⽽是像⼀个规划师⼀样从⽬的、成本、⼿段、价值等综合维度来思考重构的意义。在开发业务的同时,《重构》常伴我左右,警醒我如何写出更有价值的软件。
——阴明,掘⾦社区创始⼈
重构,是⼀个优秀程序员的基本功,因为没⼈能保证其代码不随时间腐化,⽽重构会让代码重新焕发
活⼒。整个软件⾏业对重构的认知始于Martin Fowler的《重构》,这本书让⼈们知道了“代码的坏味道”,见识到了“⼩步前⾏”的威⼒。时隔20年,Martin Fowler重新执笔改写《重构》,20年间的思维变迁就体现在这本书⾥,在第1版中,我们看到的是当时⽅兴未艾的⾯向对象,⽽第2版则透露出函数式编程的影响。如果说有什么程序员进阶秘笈,那就是不要错过Martin Fowler的任何⼀部著作,更何况是已经由时间证明过的重要著作《重构》的新版!
——郑晔,⽕币⽹⾸席架构师
如果看完本书,就兴冲冲地想要⼀些代码来重构,那你可能就陷⼊某种“⾃嗨”之中了。
了解本书中列出的那些坏味道,不仅仅可以发现代码中的那些坏味道,更可以鞭策⾃⼰以及整个团队:在⼀开始的时候,就不写或者少些那种味道很坏的代码。还应该激励⾃⼰,深⼊地理解架构、理解业务、理解需求,减少因设计失误⽽导致徒劳⽆益地反复重构。
重构也是有成本的,所以应该思考如何降低重构的成本。我推荐每⼀个程序员都来学习“重构”这门⼿艺。因为学习《重构》,是为了减少“重构”!
——庄表伟,开源社理事、执⾏长,华为云DevCloud⾼级产品经理
总之,这部经典,⽤⽅⽅⾯⾯的实⼒,等着征服你。
02
《重构(第2版)》如何读?
本书是⼀本为专业程序员编写的重构指南。⽬的是告诉你如何以⼀种可控且⾼效的⽅式进⾏重构。你将学会如何有条不紊地改进程序结构,⽽且不会引⼊错误, 这就是正确的重构⽅式。
本书的⽬标读者是专业程序员,也就是那些以编写软件为⽣的⼈。书中的范例和讨论,涉及⼤量需要详细阅读和理解的代码。这些例⼦都⽤Java写成,不过这些重构⼿法应该适⽤于⼤部分编程语⾔。为了理解书中的内容,读者需要有⼀定的编程经验,但需要的知识并不多。
尽管本书的关注对象是代码,但重构对于系统设计也有巨⼤影响。资深设计师和架构师也很有必要了解重构原理,并在
尽管本书的关注对象是代码,但重构对于系统设计也有巨⼤影响。资深设计师和架构师也很有必要了解重构原理,并在⾃⼰的项⽬中运⽤重构技术。最好是由有威望的、经验丰富的开发⼈员来引⼊重构技术,因为这样的⼈最能够透彻理解重构背后的原理,并根据情况加以调整,使之适⽤于特定⼯作领域。如果你使⽤的不是Java⽽是其他编程语⾔,这⼀点尤其重要,因为你必须把将书中给出的范例⽤其他编程语⾔改写。
如果你的时间紧张,如何能够在不通读全书的情况下充分⽤好它?
■如果你想知道重构是什么,请阅读第1章,其中的⽰例会让你弄清楚重构的过程。
■如果你想知道为什么应该重构,请阅读前两章,它们会告诉你重构是什么以及为什么应该重构。
■如果你想知道该在什么地⽅重构,请阅读第3章,它会告诉你⼀些代码特征,这些特征指出“这⾥需要重构”。
■如果你想着⼿进⾏重构,请完整阅读前四章,然后选择性地阅读重构名录。⼀开始只需概略浏览列表,看看其中有些什么,不必理解所有细节。⼀旦真正需要实施某个重构⼿法,再详细阅读它,从中获取帮助。列表部分是供查阅的参考性内容,你不必⼀次就把它全部读完。
■从第5章往后的篇幅就是本书的核⼼部分——重构名录。尽管不能说是⼀份巨细靡遗的列表,却⾜以覆盖⼤多数开发者可能⽤到的关键重构⼿法。作者曾说:”这份重构名录的源头是20世纪90年代后期我开始学习重构时的笔记,直到今天我仍然不时查阅这些笔记,作为对我不甚可靠的记忆⼒的补充。每当我想做点什么——例如拆分阶段(154)——的时候,这份列表就会提醒我如何⼀步⼀步安全前进。我希望这是值得你⽈后⼀再回顾的部分。“
给形形⾊⾊的重构⼿法命名是编写本书的重要部分。合适的词汇能帮助我们彼此沟通。当⼀名开发者
向另⼀名开发者提出建议,将⼀段代码提取成为⼀个函数,或者将计算逻辑拆分成⼏个阶段,双⽅都能理解提炼函数(106)和拆分阶段(154)是什么意思。这份词汇表也能帮助开发者选择⾃动化的重构⼿法。
- END -
异步图书
聊聊图书背后的故事

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。