荐书《遗留系统:重建实战》:当你面对一坨代码时,你应该这么做
大多数开发人员的主要时间都是花费在与现有的软件打交道上,而不是编写全新的应用程序。
这就意味着,我经常要遇到很多我写的 shit 一样的代码,你经常要遇到很多你写的 shit 一样的代码。不对,别人要经常遇到别人写的 shit 一样的代码。总之,你写的代码可能不是 shit,但是你看别人的可能就是。
先说结论——适合阅读人群:
有一定工作经验(2~3 年),并且对代码有追求的程序员。
面向复杂的遗留/旧系统,无法下手的项目。
熟悉面向对象的程序员
如果你工作 2~3 年,并且遇到瓶颈,也不妨来看看。
引言
不过这些并不重要,重要的是,你遇到一坨代码时,你要怎么做?
通常的做法应该是这样的:
考虑到这张图比较奇特,我就不想自己画了。
言归正传,正确的做法应该是这样的(PS:我整理了两个晚上的图):
对, 这就是这本书的主要流程(前 6 章)。
后四章的内容在讲重构以外的东西,比如自动化开发环境、自动化部署、使用持续集成。很多知识点和工具上,与《全栈应用开发:精益实践》一书是相似的。如果你熟悉书中的 RePractise 一图的话:
很多流程都是相似的,唯一不同的是起点。《全栈应用开发:精益实践》一书的终点,是《遗留系统:重建实战》的起点。我们在之前写了那么多的代码,有一天成为了遗留代码,这些代码可能会到别人的手里,也可能回到我们自己的手里。这时,我们应该怎么做了。
要点
考虑到,这本书的内容这么多,并且已经有了上面的那张图,我这里就只列出一些比较重要的知识:
进行重构计划之前
先进行探索性重构——使用 IDE、编译器辅助、版本管理
收集数据来对项目进行评估——性能、错误日志、异常监测
对常见任何进行计时——环境搭建时间、开发部署、修复bug
使用代码审查工具,如 PMD、Findbugs、CheckStyles
使用 Jenkins 和 SonarQube 进行持续检查
重构决策会议
会议应该决定重构、重写或者重搭
重构
这一个篇幅里,着重介绍如何识别遗留代码及测试。至于重构相关的内容,可以参见《重构》一书。
重搭
方法:
识别业务和重搭范围
定义模块和接口
构建脚本和依赖管理
分拆模块
更新技术栈
重写
确认重写范围:黑盒式、温习式、补偿式
从过去学习
数据库迁移:共享或迁移
结论
从重构项目中学习,更容易学到新的东西。
你觉得呢?
荐书《遗留系统:重建实战》:当你面对一坨代码时,你应该这么做相关推荐
- 如何接手别人的系统-遗留系统重建的道法术器势志(万字长文)
by zhimaxingzhe from 如何接手别人的系统-遗留系统重建之道法术器势志 欢迎分享链接,尊重版权,未经作者授权,禁止转载,授权后转载请注明出处,若急用请联系. https://zhim ...
- Python猫荐书系统之四:《Python源码剖析》
大家好,新一期的荐书栏目如期跟大家见面了. 先来看看今天的主角是谁:<Python源码剖析--深度探索动态语言核心技术>,2008年出版,作者 @陈儒 ,评分8.7分. 是的,你没看错,出 ...
- Python猫荐书系列之七:Python入门书籍有哪些?
本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/ArN-6mLPzPT8Zoq0Na_tsg 最近,猫哥的 Python ...
- 刚写的代码,就变成了遗留系统?
今天想跟大家聊聊遗留系统,首先,看一下这张图 这是一家银行的核心应用系统模块之间的交互图,我想没有一个人愿意工作在这样的系统上吧? 架构混乱,模块之间职责不明,一个需求就要需要修改四五个服务,这就是遗 ...
- Python猫荐书系列之五:Python高性能编程
2019独角兽企业重金招聘Python工程师标准>>> 稍微关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非 Python 与 Go 莫属,于是,隔三差五就会有人问: ...
- Python猫荐书系列:文也深度学习,理也深度学习
最近出了两件大新闻,相信大家可能有所耳闻. 我来当个播报员,给大家转述一下: 1.中国队在第 11 界罗马尼亚数学大师赛(RMM)中无缘金牌.该项赛事是三大国际赛事之一,被誉为中学奥数的最高难度.其中 ...
- 小拍荐书 | 实战+详解,带你畅游云端运算世界——OpenStack
文 | 半夏 学习是一个持续不断的过程,在互联网技术里畅游的程序员们,对学习的渴望更是难以穷尽,"小拍荐书"每周五为大家推荐与技术相关的书籍,方便大家在周末适时充电~ 小拍的推荐只 ...
- 荐书:《分布式服务架构:原理、设计与实战》
荐书:<分布式服务架构:原理.设计与实战> 全面介绍分布式服务架构的原理与设计 给出保障线上服务健康.可靠的至佳方案 自互联网诞生以来,其简单.敏捷的微服务架构开发理念和实践逐渐成为主流, ...
- Mark一下 | 当当优惠码,实付满150减30 | + 荐书
囤书囤书 我们一起阅读经典,紧跟前沿技术不掉队 这次继续给爱读书的你们最大的优惠力度 当当网自营图书大促 >> 每满100减50 << 满200减100 满300减150 ...
最新文章
- html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)
- RHEL6.4更改为CentOS6.4的yum源
- 人体姿态估计 自顶向下与自底向上
- ABAP高级顾问应该掌握的技术
- 哥伦比亚大学的材料更新提交窗口!干货!
- 课后作业:情境二:数据类型与运算符 3、运算符及表达式
- Python3 学习系列 丨 博客目录索引
- html自定义标记,HTML模板(自定义)标记
- python pca降维_机器学习之sklearn中的降维算法
- VictoriaMetrics入门与实战
- 关于win10连接不上ftp的解决方案
- 现如今有一个很有意思的现象,不管是工厂还是经销商
- vue-cli2.9.6更新不了问题
- Linux学习笔记--终端命令
- 【TSP】基于matlab GUI混合粒子群算法求解旅行商问题【含Matlab源码 925期】
- 细胞自动机 c语言程序,细胞自动机之生命游戏
- 微信授权登录 java_[JAVA实现]微信公众号网页授权登录
- box-shadow单边阴影设置
- 黑灰产眼中的NFT:平台嗷嗷待宰,用户送钱上门
- 客户端设置超时,max_fails失效----问题分析