代码迁移

随着代码变老,通常有必要对其进行现代化。 有以下动机:

  • 我们找到了一种更好的方法
  • 我们需要出于支持/许可或仅出于最佳实践的原因而更新核心库/技术
  • 我们需要在更现代的基础架构上运行该软件

简而言之,几年前编写的软件很少能完美地在我们现有的平台上运行而无需进行任何修改,这导致了一个有趣的主张:


切勿着手进行一个需要数年才能发布的项目。 到您上线时,它就会过时了!

以上不是观点,而是我过去几年中几个真实示例的故事。

但是,重新平台化是一个挑战。 理想的方法是在数年的时间里轻轻地培育软件,不断发展,逐步发展,以使其与最新情况保持同步。

但是,如果需要抬起并移动,通常可以分为三类:

  • Tablecloth Trick –对该软件进行了足够的重构,以使其可以迁移,同时仍然可以在旧平台上运行,然后进行重新构建,拔出了基础,并用兼容的基础替代了基础。
  • 批量导入和修复–在不运行软件的情况下将软件导入新技术堆栈,然后对其进行编辑,直到开始运行。
  • 肉丸–将软件分解成小块,然后在新平台上一次构建一个小块,直到它们组合在一起构成一个完整的系统。

当该软件可行时,Tablecloth Trick的进化方法非常适合。 另外两个涉及切片和切块:

  • 批量导入和修复–尝试一次修复一层问题/体系结构需求
  • 肉丸–将整个代码库切成小块,并使每个块作为一个整体工作

技术的适当性取决于您希望代码在当前结构和质量中保留多少。 如果代码基本正常,除了需要新的库/方法,那么“桌布技巧”是理想的选择。 随着代码越来越不受欢迎,您将越来越趋向于肉丸/切块方法。

翻译自: https://www.javacodegeeks.com/2020/04/three-types-of-code-migration.html

代码迁移

代码迁移_三种类型的代码迁移相关推荐

  1. html语言闪烁特效代码,css3 实现文字闪烁效果的三种方式示例代码

    1.通过改变透明度来实现文字的渐变闪烁,效果图: 文字闪烁 星星之火可以燎原 .myclass{ letter-spacing:5px;/*字间距*/ color: red; font-weight: ...

  2. 使用小乌龟TortoiseGit快速解决代码冲突的三种解决方法:

    使用小乌龟TortoiseGit快速解决代码冲突的三种解决方法: 1.Resolved:手动查看并解决完冲突以后使用. 2.Resolve conflict using "CHERRY_PI ...

  3. mysql double 转 字符串_没想到!在MySQL数据库中的数据有这三种类型!

    MySQL数据库是一个或多个数据列构成二维表,它的每一种数据列都有特定类型,而类型决定MySQL是怎么看待该列数据,如果把整型数值存放到字符类型的列中,MySQL则会把它当成字符串来处理. MySQL ...

  4. java将一个整数按字节输出_在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解。其他的三种类型如下:1、...

    在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解. 其他的三种类型如下: 1. 基本类型:short 二进制位数:16 ...

  5. 广播泛洪_这三种类型的报文,交换机会进行泛洪:广播、组播、未知单播

    随着互联网的发展,各种应用层出不穷,日新月异,对网络设备的要求也越来越高,对广大设备厂商也提出更多的要求.不过这些事情都与二层交换机没有关系:) ,因为各种应用的数据到达二层交换机时,都只会变成一个一 ...

  6. 数仓:事实表设计方法,原则和三种类型选择

    关注公众号,回复关键字 [资料],获取[10万字大数据框架面试知识点]与[大数据开发的命令手册] 事实表设计方法 事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计.其包含与该业务过程有关的维 ...

  7. html5中标签分为,HTML标签的三种类型

    HTML标签的类型分为三种:行内元素,行内块元素,块级元素 而标签的属性是可以转换的 display:inline: 转换为行内元素 display:linline-block 转换为行内块元素 di ...

  8. java中有scoreframe类型嘛_java构造函数的三种类型总结

    我们说构造函数能处理参数的问题,但其实也要分三种情况进行讨论.目前有三种类型:无参.有参和默认.根据不同的参数情况,需要我们分别进行构造函数的讨论.这里重点是无参构造函数的初始化也要分两种方法进行分析 ...

  9. html样式表三种类型包括,css样式有哪几种类型

    CSS样式有三种类型:1.行内样式(内嵌样式),使用style属性直接把CSS代码添加到HTML的标记中:2.内部样式(内联样式),把css样式写在style标签中:3.外部样式(外联样式),将css ...

最新文章

  1. 鱼佬:我的数据挖掘之路!
  2. 想快速入门NLP?我们测评了15门最火课程,帮你找到最适合的
  3. 在asp.net中读取XML文件信息的4种方法
  4. Magicodes.IE 2.2里程碑需求和建议征集
  5. 学习较底层编程:动手写一个C语言编译器
  6. 捡起JavaScript(1)
  7. 用jQuery实现一些导航条切换,显示隐藏
  8. Extjs4 Tab面板Mapbar地图关闭再打开气泡失效问题解决
  9. 优先队列的优先级设置法
  10. python alphago_如何利用 Python 打造一款简易版 AlphaGo
  11. 浏览器插件检测淘宝订单是否淘客下单
  12. 【原创】Magisk+Shamiko过APP ROOT检测
  13. CSR8311/CSR8811 HCI vendor command说明
  14. mac通过u盘启动linux系统,在mac下制作linux启动U盘
  15. 四个管理举措提高研发团队工作效率
  16. codeforces 894A QAQ
  17. 谈谈笔者是怎么拿到HFish社区活动仅有的500京东E卡
  18. win10升级到win11教程
  19. python字符串前面u、r、b含义以及str、bytes互转
  20. abaqus的python安装文件在哪_拓展abaqus python 模块

热门文章

  1. 地图的legend点击事件_3D地图的定时高亮和点击事件
  2. Python sys 模块的 sys.argv
  3. springboot logback日志问题
  4. 水果(hdu1262)map
  5. 21英里法则_一英里的跑道将带您到任何地方
  6. VS2012C语言有编译按钮在哪,VS2012的使用
  7. T265/D435i相机和相机与IMU参数获取,也可以通过realsense-viewer直接获取
  8. 基于python将grd文件转成tif,并进行裁剪
  9. 爆音在bilibili 的韵脚语录
  10. 【第三方对接】使用 PageOffice 实现在线 Office 整合到 Spring 项目