大多数开发人员的主要时间都是花费在与现有的软件打交道上,而不是编写全新的应用程序。

这就意味着,我经常要遇到很多我写的 shit 一样的代码,你经常要遇到很多你写的 shit 一样的代码。不对,别人要经常遇到别人写的 shit 一样的代码。总之,你写的代码可能不是 shit,但是你看别人的可能就是。

先说结论——适合阅读人群:

  • 有一定工作经验(2~3 年),并且对代码有追求的程序员

  • 面向复杂的遗留/旧系统,无法下手的项目

  • 熟悉面向对象的程序员

如果你工作 2~3 年,并且遇到瓶颈,也不妨来看看。

引言

不过这些并不重要,重要的是,你遇到一坨代码时,你要怎么做?

通常的做法应该是这样的:

Shit

考虑到这张图比较奇特,我就不想自己画了。

言归正传,正确的做法应该是这样的(PS:我整理了两个晚上的图):

遗留系统:重建实战

对, 这就是这本书的主要流程(前 6 章)。

后四章的内容在讲重构以外的东西,比如自动化开发环境、自动化部署、使用持续集成。很多知识点和工具上,与《全栈应用开发:精益实践》一书是相似的。如果你熟悉书中的 RePractise 一图的话:

RePractise

很多流程都是相似的,唯一不同的是起点。《全栈应用开发:精益实践》一书的终点,是《遗留系统:重建实战》的起点。我们在之前写了那么多的代码,有一天成为了遗留代码,这些代码可能会到别人的手里,也可能回到我们自己的手里。这时,我们应该怎么做了。

要点

考虑到,这本书的内容这么多,并且已经有了上面的那张图,我这里就只列出一些比较重要的知识:

进行重构计划之前

  1. 先进行探索性重构——使用 IDE、编译器辅助、版本管理

  2. 收集数据来对项目进行评估——性能、错误日志、异常监测

  3. 对常见任何进行计时——环境搭建时间、开发部署、修复bug

  4. 使用代码审查工具,如 PMD、Findbugs、CheckStyles

  5. 使用 Jenkins 和 SonarQube 进行持续检查

重构决策会议

  1. 会议应该决定重构重写或者重搭

重构

这一个篇幅里,着重介绍如何识别遗留代码及测试。至于重构相关的内容,可以参见《重构》一书。

重搭

方法:

  1. 识别业务和重搭范围

  2. 定义模块和接口

  3. 构建脚本和依赖管理

  4. 分拆模块

  5. 更新技术栈

重写

  1. 确认重写范围:黑盒式、温习式、补偿式

  2. 从过去学习

  3. 数据库迁移:共享或迁移

结论

从重构项目中学习,更容易学到新的东西。

你觉得呢?

荐书《遗留系统:重建实战》:当你面对一坨代码时,你应该这么做相关推荐

  1. 如何接手别人的系统-遗留系统重建的道法术器势志(万字长文)

    by zhimaxingzhe from 如何接手别人的系统-遗留系统重建之道法术器势志 欢迎分享链接,尊重版权,未经作者授权,禁止转载,授权后转载请注明出处,若急用请联系. https://zhim ...

  2. Python猫荐书系统之四:《Python源码剖析》

    大家好,新一期的荐书栏目如期跟大家见面了. 先来看看今天的主角是谁:<Python源码剖析--深度探索动态语言核心技术>,2008年出版,作者 @陈儒 ,评分8.7分. 是的,你没看错,出 ...

  3. Python猫荐书系列之七:Python入门书籍有哪些?

    本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/ArN-6mLPzPT8Zoq0Na_tsg 最近,猫哥的 Python ...

  4. 刚写的代码,就变成了遗留系统?

    今天想跟大家聊聊遗留系统,首先,看一下这张图 这是一家银行的核心应用系统模块之间的交互图,我想没有一个人愿意工作在这样的系统上吧? 架构混乱,模块之间职责不明,一个需求就要需要修改四五个服务,这就是遗 ...

  5. Python猫荐书系列之五:Python高性能编程

    2019独角兽企业重金招聘Python工程师标准>>> 稍微关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非 Python 与 Go 莫属,于是,隔三差五就会有人问: ...

  6. Python猫荐书系列:文也深度学习,理也深度学习

    最近出了两件大新闻,相信大家可能有所耳闻. 我来当个播报员,给大家转述一下: 1.中国队在第 11 界罗马尼亚数学大师赛(RMM)中无缘金牌.该项赛事是三大国际赛事之一,被誉为中学奥数的最高难度.其中 ...

  7. 小拍荐书 | 实战+详解,带你畅游云端运算世界——OpenStack

    文 | 半夏 学习是一个持续不断的过程,在互联网技术里畅游的程序员们,对学习的渴望更是难以穷尽,"小拍荐书"每周五为大家推荐与技术相关的书籍,方便大家在周末适时充电~ 小拍的推荐只 ...

  8. 荐书:《分布式服务架构:原理、设计与实战》

    荐书:<分布式服务架构:原理.设计与实战> 全面介绍分布式服务架构的原理与设计 给出保障线上服务健康.可靠的至佳方案 自互联网诞生以来,其简单.敏捷的微服务架构开发理念和实践逐渐成为主流, ...

  9. Mark一下 | 当当优惠码,实付满150减30 | + 荐书

    囤书囤书 我们一起阅读经典,紧跟前沿技术不掉队 这次继续给爱读书的你们最大的优惠力度   当当网自营图书大促 >> 每满100减50  << 满200减100 满300减150 ...

最新文章

  1. html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)
  2. RHEL6.4更改为CentOS6.4的yum源
  3. 人体姿态估计 自顶向下与自底向上
  4. ABAP高级顾问应该掌握的技术
  5. 哥伦比亚大学的材料更新提交窗口!干货!
  6. 课后作业:情境二:数据类型与运算符 3、运算符及表达式
  7. Python3 学习系列 丨 博客目录索引
  8. html自定义标记,HTML模板(自定义)标记
  9. python pca降维_机器学习之sklearn中的降维算法
  10. VictoriaMetrics入门与实战
  11. 关于win10连接不上ftp的解决方案
  12. 现如今有一个很有意思的现象,不管是工厂还是经销商
  13. vue-cli2.9.6更新不了问题
  14. Linux学习笔记--终端命令
  15. 【TSP】基于matlab GUI混合粒子群算法求解旅行商问题【含Matlab源码 925期】
  16. 细胞自动机 c语言程序,细胞自动机之生命游戏
  17. 微信授权登录 java_[JAVA实现]微信公众号网页授权登录
  18. box-shadow单边阴影设置
  19. 黑灰产眼中的NFT:平台嗷嗷待宰,用户送钱上门
  20. 客户端设置超时,max_fails失效----问题分析

热门文章

  1. 软件开发书籍-Python Qt GUI与数据可视化编程
  2. 农业银行 2021校园招聘 备考资料汇总
  3. JAVA城市猎人户外军品店计算机毕业设计Mybatis+系统+数据库+调试部署
  4. SQL布尔盲注 —— 【WUST-CTF2020】颜值成绩查询
  5. Javascript数据类型强制转换
  6. Spring Security的配置机制早就变了
  7. 携程个性化推荐算法实践
  8. ViSP学习笔记(六):使用ViSP实现常见的图像滤波
  9. php 剪头,今天,为什么要剪头发?
  10. [原创]通过大光圈,手动调焦距造成背景虚化效果