大规模重构
Maude Lemaire
徐栋栋 译
出版时间:2024年05月
页数:243
“在一个巨大的、不断变化的代码库中,保持生产力似乎是一个西西弗斯式的任务。本书将这一过程分解成一个个你可以立即应用的步骤。”
——Cal Henderson
Slack首席技术官
“我喜欢这本书中的案例研究。我希望我能把这本书送给过去的自己,帮助以前的我更好的规划大型迁移。书中有很多我需要去努力学习的经验。”
——Julia Evans
《Wizard Zines》的作者

对大型、复杂的代码库进行重大修改是一项艰巨的任务,除非你有合适的团队、工具和思维方式,否则几乎不可能成功。如果你的应用程序需要进行重大改造,但你又不确定以何种可持续的方式进行,那么这本书就是为你准备的。
软件工程师Maude Lemaire将带领你从头到尾经历整个重构过程。你将了解她在 Slack 的关键发展时期是如何提高性能和重构的,并从这些经验中得到启发,书中利用两个案例研究来说明这些技术是如何在实际工作中产生影响的。本书将有助于你获得一种新的能力,使你更高效地进行重构。
● 理解代码是如何退化的,以及为什么一些退化是不可避免的。
● 在重构之前,量化和评定你的代码状态。
● 起草一个具有战略里程碑且精心设计的执行计划。
● 赢得领导层的支持。
● 建立和协调一个最适合项目的团队。
● 在团队内外进行高效沟通。
● 正确使用重构的最佳实践。
  1. 前言
  2. 第一部分 概述
  3. 第1章 重构
  4. 1.1 什么是重构?
  5. 1.2 什么是大规模重构?
  6. 1.3 你为什么要关心重构?
  7. 1.4 重构的好处
  8. 1.4.1 开发者的生产力
  9. 1.4.2 识别bug
  10. 1.5 重构的风险
  11. 1.5.1 严重的退步
  12. 1.5.2 挖掘出休眠的bug
  13. 1.5.3 范围蔓延
  14. 1.5.4 不必要的复杂度
  15. 1.6 何时重构
  16. 1.6.1 小范围
  17. 1.6.2 代码的复杂度明显地阻碍了开发
  18. 1.6.3 产品需求的转变
  19. 1.6.4 性能
  20. 1.6.5 使用新技术
  21. 1.7 何时不要重构
  22. 1.7.1 为了好玩或出于无聊的原因
  23. 1.7.2 因为你恰好路过
  24. 1.7.3 使代码更具可扩展性
  25. 1.7.4 当你没时间时
  26. 1.8 我们的第一个重构示例
  27. 1.8.1 简化条件语句
  28. 1.8.2 提取魔法数字
  29. 1.8.3 提取自包含逻辑
  30. 第2章 代码是如何退化的
  31. 2.1 为什么理解代码退化很重要
  32. 2.2 需求的转变
  33. 2.2.1 可扩展性
  34. 2.2.2 可访问性
  35. 2.2.3 设备兼容性
  36. 2.2.4 环境改变
  37. 2.2.5 外部依赖
  38. 2.2.6 未使用的代码
  39. 2.2.7 产品需求变化
  40. 2.3 技术债
  41. 2.3.1 技术决策
  42. 2.3.2 缺乏持续的整理
  43. 2.3.3 移动得太快
  44. 2.4 应用我们的知识
  45. 第二部分 规划
  46. 第3章 测量我们的起点状态
  47. 3.1 为什么测量重构的影响很难?
  48. 3.2 测量代码复杂性
  49. 3.2.1 哈尔斯特德(Halstead)度量
  50. 3.2.2 循环复杂度
  51. 3.2.3 NPath复杂度
  52. 3.2.4 代码行数
  53. 3.3 测试覆盖率指标
  54. 3.4 文档
  55. 3.4.1 正式文档
  56. 3.4.2 非正式文档
  57. 3.5 版本控制
  58. 3.5.1 提交信息
  59. 3.5.2 聚合提交
  60. 3.6 声誉
  61. 3.7 构建完整的画面
  62. 第4章 起草计划
  63. 4.1 定义你的最终状态
  64. 4.1.1 旅途中
  65. 4.1.2 工作中
  66. 4.2 映射最短的距离
  67. 4.2.1 旅途中
  68. 4.2.2 工作中
  69. 4.3 确定战略中间里程碑
  70. 4.3.1 旅途中
  71. 4.3.2 工作中
  72. 4.4 选择推出策略
  73. 4.4.1 明模式(Light)/暗模式(Dark)
  74. 4.4.2 Smart DNA案例的推出
  75. 4.5 清理工件
  76. 4.6 在你的计划中引用指标
  77. 4.6.1 将目标指标延伸至中间里程碑
  78. 4.6.2 不同的里程碑指标
  79. 4.7 估算
  80. 4.8 与其他团队分享你的计划
  81. 4.8.1 透明度
  82. 4.8.2 观点
  83. 4.9 精细化计划
  84. 第5章 获取支持
  85. 5.1 为什么你的经理没有上船
  86. 5.1.1 经理不编码
  87. 5.1.2 经理们的评估方式不同
  88. 5.1.3 管理者看到的风险
  89. 5.1.4 管理者需要协调
  90. 5.2 制定令人信服的策略
  91. 5.2.1 使用对话策略
  92. 5.2.2 构建对齐的“三明治”
  93. 5.2.3 依赖证据
  94. 5.2.4 采取强硬手段
  95. 5.3 认同塑造重构
  96. 第6章 构建正确的团队
  97. 6.1 识别不同类型的专家
  98. 6.2 匹配制度
  99. 6.2.1 多行业专家
  100. 6.2.2 重新审视活跃贡献者
  101. 6.2.3 我们专家名单中的偏见
  102. 6.3 重构团队的类型
  103. 6.3.1 所有者
  104. 6.3.2 建议的方法
  105. 6.3.3 清洁人员
  106. 6.4 招募动员
  107. 6.4.1 指标
  108. 6.4.2 慷慨
  109. 6.4.3 机会
  110. 6.4.4 交换筹码
  111. 6.4.5 重复
  112. 6.5 一些结果
  113. 6.5.1 现实的场景
  114. 6.5.2 最坏的情况
  115. 6.6 培养强大的团队
  116. 第三部分 执行
  117. 第7章 沟通
  118. 7.1 在你的团队内
  119. 7.1.1 站会
  120. 7.1.2 每周同步
  121. 7.1.3 回顾会议
  122. 7.2 在你的团队外
  123. 7.2.1 开始项目时
  124. 7.2.2 在项目执行期间
  125. 7.3 始终迭代
  126. 第8章 执行策略
  127. 8.1 团队建设
  128. 8.1.1 结对编程
  129. 8.1.2 保持每个人的动力
  130. 8.2 保持记录
  131. 8.2.1 中期指标度量
  132. 8.2.2 发现的漏洞
  133. 8.2.3 清理项
  134. 8.2.4 记录超出范围的内容
  135. 8.3 高效编程
  136. 8.3.1 原型
  137. 8.3.2 保持事物小巧
  138. 8.3.3 测试,测试,测试
  139. 8.3.4 提出“愚蠢”的问题
  140. 8.4 结论
  141. 第9章 让重构保持有效
  142. 9.1 推动支持
  143. 9.2 传授
  144. 9.2.1 主动传授
  145. 9.2.2 被动传授
  146. 9.3 强化
  147. 9.3.1 渐进式代码检查
  148. 9.3.2 代码分析工具
  149. 9.3.3 门槛与护栏
  150. 9.4 将改进融入企业文化
  151. 第四部分 用例
  152. 第10章 案例研究:冗余数据库模式(Schemas)
  153. 10.1 Slack 101
  154. 10.2 Slack架构101
  155. 10.3 可扩展性问题
  156. 10.3.1 启动Slack客户端
  157. 10.3.2 文件可见性
  158. 10.3.3 提及
  159. 10.4 合并表格
  160. 10.4.1 收集分散的查询
  161. 10.4.2 制定迁移策略
  162. 10.4.3 量化我们的进展
  163. 10.4.4 试图保持团队的动力
  164. 10.4.5 沟通我们的进展
  165. 10.5 整理
  166. 10.6 经验教训
  167. 10.7 了解代码的历史
  168. 10.7.1 确保充分的测试覆盖率
  169. 10.7.2 保持团队的动力
  170. 10.7.3 专注于战略里程碑
  171. 10.7.4 识别并依赖有意义的指标
  172. 10.8 收获
  173. 第11章 案例研究:迁移到新数据库
  174. 11.1 工作区分片数据
  175. 11.2 将channels_members迁移到Vitess
  176. 11.2.1 分片方案
  177. 11.2.2 开发新模式
  178. 11.3 解决JOIN操作中的纠缠问题
  179. 11.4 一个困难的推出
  180. 11.4.1 回填模式
  181. 11.4.2 暗模式
  182. 11.4.3 明模式
  183. 11.4.4 日落模式
  184. 11.5 整理
  185. 11.6 经验教训
  186. 11.6.1 设定现实的估算
  187. 11.6.2 寻找你需要的团队成员
  188. 11.6.3 仔细规划范围
  189. 11.6.4 选择一个项目沟通的单一地点
  190. 11.6.5 设计一个周到的推出计划
  191. 11.7 收获
书名:大规模重构
作者:Maude Lemaire
译者:徐栋栋 译
国内出版社:中国电力出版社
出版时间:2024年05月
页数:243
书号:978-7-5198-8626-4
原版书书名:Refactoring at Scale
原版书出版商:O'Reilly Media
Maude Lemaire
 
Maude Lemaire是Slack的一名软件工程师,她的工作是提升产品性能,以支持一些世界上最大的组织。她的大部分时间都在进行人员管理、网络调用、重构复杂的代码块、整合冗余的数据库,以及为其他开发者构建工具。
 
 
本书封面上的动物是一只海象(学名:Odobenus rosmarus),这是在北极和亚北极地区发现的大型海洋哺乳动物。
海象以其长而锋利的獠牙而闻名,这些獠牙帮助它们破冰、爬出水面、在群体中建立优势并保护自己免受捕食者的攻击。短小的毛发稀疏地覆盖在海象厚厚的皮肤上,颜色从灰色到黄棕色都有。一层更厚的脂肪提供了温暖和储存的能量,使它们能在严酷的条件下生存。
这些行动缓慢的肉食动物更喜欢生活在冰和浅水区域,以便于获取食物,并会季节性地迁移以寻找最佳厚度的冰。短的前鳍和更大的后鳍推动着这种平均重达一吨的生物在水中游动,而它的触须比眼睛更多地用于导航和识别食物。海象主要消耗大量的软体动物和其他贝类,但偶尔也会吃更大的动物,如海鸟甚至海豹。
全球气候变化和人类捕猎使得海象的保护状况被列为易危。O’Reilly封面上的许多动物都处于濒危状态;而所有这些动物对于世界都至关重要。
购买选项
定价:78.00元
书号:978-7-5198-8626-4
出版社:中国电力出版社