关于我们
书单推荐
新书推荐
|
大规模重构 本书的主要内容有:理解代码是如何退化的,以及为什么一些退化是不可避免的。在重构之前,量化和评定你的代码状态。起草一个具有战略里程碑且精心设计的执行计划。赢得领导层的支持。建立和协调一个最z适合项目的团队。在团队内外进行高效沟通。正确使用重构的最z佳实践。 一句话推荐 前言虽然有很多关于重构的书籍,但大多数都是处理如何一行行改进代码的细节问题。我认为重构最困难的部分通常不是找到改进手头代码的精确方法,而是需要在其周围进行的所有其他事情。事实上,我甚至可能会说,在任何大型软件项目中,小事情很少有意义,协调复杂的变化才是最大的挑战。这本书是我试图帮助你解决那些困难问题的尝试。它是多年经验的结晶,我曾经进行过各种规模的重构项目。在Slack 任职期间,我领导的许多项目使公司得以大规模扩展,我们的产品已经能够支持拥有25000 名员工的客户,甚至是拥有高达500000 名员工的客户。我们开发的有效重构策略需要能够适应组织的爆炸性增长,与此同时,我们的工程团队在同一时期几乎增长了6 倍。成功地规划和执行一个既影响到你的大部分代码库又涉及越来越多工程师的项目绝非易事。我希望这本书能给你提供你所需要的工具和资源来做到这一点。谁应该阅读这本书如果你在与几十个甚至更多的工程师一起处理大型、复杂的代码库,那么本书就适合你!如果你是一名初级工程师,想通过对公司产生广泛、有意义的影响并开始构建更高级别的技能,大规模重构项目可以是实现这一目标的好方法。这些项目的影响范围广泛,超越了你所在的团队(它们也不是高级工程师马上就能抢走的那种光鲜项目)。这是一个非常好的机会,让你获得新的专业技能(并加强你已有的技能)。本书将教会你如何从头到尾顺利地完成这类项目。本书也是高度技术性的高级工程师的有价值资源,这类工程师可以自己编写没有任何问题的代码,但却感到其他人不理解他们工作的价值而感到沮丧。如果你感到孤立无援,正在寻找方法提升你周围其他人的水平,本书可以教给你所需的策略,帮助他人从你的角度看到重要的技术问题。对于希望帮助团队通过大规模重构的技术经理,本书可以帮助你了解如何在每个步骤中更好地支持你的团队。这里没有大量的技术内容,因此,如果你会以管理的角色参与到大规模重构(工程经理、产品经理、项目经理),都可以从这些思想中受益。为什么写这本书当我开始进行第一个大规模的重构时,我理解代码需要改变的原因和方式,但最困惑我的是如何安全、逐步地引入这些变化,而不会伤及其他人的利益。我渴望产生跨职能影响,并没有停下来思考重构可能对其他人的工作产生的影响,以及我如何激励他们帮助我完成它。我只是一直在冲刺(可以在第10 章中阅读有关此重构的内容)。随后的几年中,我重构了许多行代码,并成为一些重构不当的受害者。我从这些经历中学到的教训似乎很重要,因此我开始在许多会议上演讲。我的演讲引起了数百名工程师的共鸣,他们都像我一样,在自己的公司中经历了有效重构大面积代码的问题。显然,我们的软件教育存在某种差距,特别是在专业软件编写的核心方面。在许多方面,这本书试图教授计算机科学课程中未涵盖的重要内容,仅仅因为在课堂上教授这些内容太困难了。也许这些内容在书中也无法教授,但为什么不试一试呢?本书的组织结构本书分为四部分,按照计划和执行大规模重构所需的工作的大致时间顺序进行组织,如下所述。 第一部分概述。介绍重构背后的重要概念。─ 第 1 章重构。讨论了重构的基础知识以及对比大规模重构与较小规模的重构有何不同。─ 第 2 章代码是如何退化的。描述代码可能退化的多种方式以及如何将其纳入有效的重构中。 第二部分规划。涵盖了计划成功重构所需的所有知识。─ 第 3 章测量我们的起点状态。提供一个概述,介绍在进行任何改进之前,你可以使用哪些指标来衡量你的重构旨在解决的问题。─ 第 4 章起草计划。解释了一个全面的执行计划的重要组成部分以及如何制定一个执行计划。─ 第 5 章获取支持。讨论了不同的方法来获取工程领导支持你的重构。─ 第 6 章构建正确的团队。描述了如何确定哪些工程师最适合参与重构以及如何为他们提供建议。 第三部分执行。关注在重构过程中如何确保重构顺利进行。─ 第 7 章沟通。探讨如何最好地促进团队内部和与任何外部利益相关者之间的良好沟通。─ 第 8 章执行策略。看看如何在重构过程中保持动力的几种方法。─ 第 9 章让重构保持有效。提供了几个建议,以确保你进行的重构所引入的更改得以保留。 第四部分用例,包含两个案例研究,都是从我在Slack 工作期间参与的项目中提取的。这些重构影响了我们核心应用程序的大部分,真正地达到了规模。我希望这些能够帮助阐述书中第一部分到第三部分讨论的概念。这个顺序并不是一成不变的,仅仅因为我们进入了新的阶段,并不意味着我们不应该在必要时重新审视我们之前的假设。例如,你可能会以一个强烈的团队意识开始你的重构工作,但是在起草执行计划的过程中,你可能会发现你需要比最初预期的更多的工程师。这没关系,这种情况经常发生!排版约定本书使用以下排版约定。斜体(Italic)表示新术语、URL、电子邮件地址、文件名和文件扩展名。等宽字体(Constant width)表示程序片段,以及正文中出现的程序元素,例如变量、函数名、数据类型、语句和关键字。使用代码示例补充材料(代码示例、练习等)可在以下链接下载:https://github.com/qcmaude/refactoring-at-scale。本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可。销售或分发OReilly图书的示例需要获得许可,引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中需要获得许可。我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和ISBN,例如:Refactoring at Scale by Maude Lemaire(OReilly). Copyright 2021 Maude Lemaire, 978-1-492-07553-0 。如果你觉得自己对示例代码的使用超出了上述许可范围,请通过permissions@oreilly.com 与我们联系。OReilly 在线学习平台(OReilly Online Learning)近40 年来,OReilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。公司独有的专家和改革创新者网络通过OReilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。OReilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自OReilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:https://www.oreilly.com/。联系我们任何有关本书的意见或疑问,请按照以下地址联系出版社。美国:OReilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中国:北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)奥莱利技术咨询(北京)有限公司勘误、示例和其他信息,请访问https://oreil.ly/refactoring-at-scale。对于本书的评论和技术性问题,请发送电子邮件到errata@oreilly.com.cn。要了解更多OReilly 图书和培训的信息,请访问https://oreilly.com。我们的Facebook:https://linkedin.com/company/oreilly-media。我们的Twitter:https://twitter.com/oreillymedia。我们的YouTube:https://www.youtube.com/oreillymedia。致谢写一本书并不是一件容易的事情,这本书也不例外,没有很多人的贡献是不可能完成的。首先,我要感谢OReilly 的编辑Jeff Bleiel。Jeff 把一个没有经验的作者(我)变成了一位出版的作者。他的反馈总是非常准确,帮助我更有条理地组织我的思路,并鼓励我在我写得太啰嗦时进行删减(这种情况经常发生)。我简直无法想象有比他更好的编辑。其次,我要感谢少数几个朋友和同事,他们阅读了几章的早期版本:Morgan Jones、Ryan Greenberg 和Jason Liszka。他们的反馈让我确信我的想法是正确的,并且对广泛的读者有价值。对于鼓励和引发思考的谈话,感谢Joann、Kevin、Chase 和Ben。我要感谢Maggie Zhou,在第二个案例研究章节(第11 章)中与我共同撰写。她是我曾经一起工作过的最有思想、最聪明、最有活力的同事之一,我很高兴让世界读到我们一起的冒险!非常感谢我的技术审稿人David Cottrell 和Henry Robinson。David 是我大学时的好朋友,在Google 工作多年,领导了许多大规模的重构。他后来创立了自己的公司。Henry 是我在Slack 的同事,做出了无数的开源贡献,并亲眼见证了硅谷公司的爆炸式增长。他们都是非常有责任心的工程师,这本书从他们的指导和智慧中受益匪浅。我感激他们花费许多时间来验证书中的内容。最终手稿中的任何不准确之处都是我的错误。感谢所有曾经和我一起重构过东西的人。你们太多了,无法一一列举,但你们知道自己是谁。你们都对本书中的思想产生了影响。感谢我的家人(Simon、Marie-Josée、Fran?ois-Rémi、Sophie、Sylvia、Gerry、Stephanie 和Celia)在场外为我加油。最后,感谢我的丈夫Avery。谢谢你的耐心,谢谢你给我写作的时间、空间和鼓励。谢谢你让我占用了无数个下午来讨论一个、两个(或三个、四个)想法。谢谢你相信我。这本书和你一样属于我。我爱你。 Maude Lemaire是Slack的一名软件工程师,她的工作是提升产品性能,以支持一些世界上最z大的组织。她的大部分时间都在进行人员管理、网络调用、重构复杂的代码块、整合冗余的数据库,以及为其他开发者构建工具。 目录
你还可能感兴趣
我要评论
|