问题标签 [legacy-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1161 浏览

refactoring - 删除紧密耦合的代码

如果这是一个骗局,请原谅我,但我找不到任何符合这个确切问题的东西。

我正在使用一个耦合非常紧密的遗留应用程序。我们正在提取一些主要功能,因为我们将从外部服务中获取该功能。

开始删除现在未使用的代码的最佳方法是什么?我应该从极端基础开始,移除并重构我的堆栈吗?午餐期间,我将去看一看《有效地使用旧代码》

0 投票
6 回答
535 浏览

architecture - 重建遗留应用程序的策略

我有一个新的任务即将到来,我在 .Net WPF 中重新设计了一些旧的 COM 应用程序。如果可能的话,我需要重用功能或现有代码,但是我怀疑这样做的范围是有限的。

我需要复制现有功能,但需要使用现代且可扩展的架构来实现它。

有没有人对处理这种类型的项目有任何一般性建议?有没有关于这个主题的好资源?

是否有任何久经考验的技术或常见的陷阱?

0 投票
2 回答
161 浏览

sql-server - 在遗留应用程序中查找冗余页面、文件、存储过程

我对旧的 ASP Web 应用程序有一些恐惧。有没有人有任何简单的方法可以找到不再需要的脚本、页面和存储过程?(除了“old___code”、“delete_this”等中的内容;-)

0 投票
3 回答
16175 浏览

refactoring - Coding Katas 用于练习遗留代码的重构

最近几个月,我对编码 katas 非常感兴趣。我相信它们是磨练我的编程技能并提高我在工作中编写的代码质量的好方法。

有很多地方可以找到 Katas。喜欢..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

我发现这些是 Katas 的优秀存储库……我对其中一些的尝试获得了巨大的回报。

但是,我觉得到目前为止我看到的所有 Kata 都有一个缺点。他们似乎都不允许我练习重构糟糕的代码。第一次学习如何编写干净的代码很棒……但是在我目前的工作中,我没有太多机会编写新代码。相反,我经常与遗留代码作斗争,并试图弄清楚如何重构模块、消除依赖关系和减少耦合。

因此,我正在寻找一些可以用来磨练我重构遗留代码并将其转换为干净代码的技能的 Katas。

有人知道已经存在的吗?我知道我在工作时会进行很多练习......但我想磨练我的技能,以便能够快速了解​​如何在类中分解依赖项和分离关注点做得太多了。

0 投票
1 回答
83 浏览

legacy-code - 确定由于遗留应用程序而增加了在代码中工作的时间?

如果我们真的没有在非遗留代码中工作的基准来比较它,那么您将如何确定由于使用遗留代码而不是经过测试的代码进行成本分析而增加了多少时间。

0 投票
1 回答
141 浏览

sql - 通过触发器将 MySQL 模式同步到模式?

快速说明:我有 19 天的时间来解决我客户的问题。

背景:客户聘请了一名承包商,他吹嘘自己可以在 3 个月内推出一款新应用程序。两个月又几天后,我被带进来,那个人被放了;没有完整的代码,没有考虑到架构,以及对 UI 的厌恶。

我有两个应用程序:一个是生产和成熟,另一个需要一些爱。一个有我需要的所有数据,另一个没有。我正在编写新的代码 TDD 风格,目标是构建一个部分受陪审团操纵的 SOA 基础架构,该基础架构涵盖除数据本身之外的所有问题。如果我有更多的时间,我可以使用 liquibase 将模式重构为可憎的碎片(发挥你的想象力),但我不......所以计划 B 如下:

App A (inserts|updates|deletes) 实体 Foo 更新 AppASchema.FooTable ,后者通过后触发器更新 AppBSchema.FooLikeTable ,反之亦然。

我知道这是一个疯狂的想法,但这是我所拥有的最糟糕的想法中最少的一个,我担心的是

  1. 可以创建一个无限循环(AppA 触发器更新 AppB 更新 AppA )
  2. 没有高负载,但这基本上将操作数加倍到 n*2,所以如果我达到 MySQL 服务器的一半容量,对于更新索引等基本内容,它似乎有效或接近满容量。
  3. 作为一个喜忧参半,最初的模式设计者让所有的表 InnoDB 引擎......这对性能来说太可怕了,但这种设置能否确保更高的机会保持完整性。

我实施触发器的时间预算是 12 小时或破产。

0 投票
3 回答
289 浏览

c++ - Legacy-C C++ 合并

我目前正在开发一个包含遗留 c 代码(SPICE 变体)的性能关键应用程序。

问题如下:

遗留 c 代码的创建者显然认为使用参数传递是现代最大的弊端之一。因此,大约 90% 的变量是全局声明的。

为了模拟目的,必须重复调用遗留代码,并且使用线程并发调用此代码部分将有利于整体执行时间。

我的想法是封装遗留的 c 代码(我已经为 g++ 编译稍作修改),以便可以创建遗留代码的多个对象,从而消除了许多互斥锁的必要性。显然,全局变量将因此被封装为成员变量。

这带来了另一个问题。遗留编码器也不相信全局变量的初始化;可能是因为 C 倾向于将全局变量初始化为 0。但 C++ 成员变量并不能获得相同的处理。一些变量必须初始化为 0 才能正确操作遗留 c 代码。但事实证明,由于使用了大量的全局变量,因此很难找到这些变量。

请记住,时间不允许我对遗留的 c 代码进行任何主要程度的修改。

我的问题如下:

  1. 我认为 C 代码的封装会比使用大约 90 个互斥锁更快的假设是否正确?

  2. 有没有一种简单的方法可以找到未初始化的成员变量使用?(据我了解 gcc 只能对自动变量执行此操作)。这样我就可以只初始化关键变量?

  3. 如果不是问题 2 ...是否有一种快速而干净的方法来初始化所有成员变量而不使用普通的构造函数 init 方法?

  4. 或者(长镜头)是否有一种遵循程序流程的快速方法,以便我可以结合自己传递的参数?

任何帮助将不胜感激。注意

0 投票
8 回答
24587 浏览

unit-testing - 向遗留代码添加单元测试

事后你有没有在遗留代码中添加单元测试?代码有多复杂,存根和模拟所有内容有多困难?最终结果值得吗?

0 投票
3 回答
3030 浏览

c++ - 将 iostream 与 stdio 同步

我正在尝试将 iostream 添加到遗留代码中,因此想要同步这两个库。根据这篇文章,我应该使用 std::ios_base::sync_with_stdio。

现在,我想知道它是如何在实践中使用的(请提供示例),我应该注意的副作用。

谢谢

0 投票
12 回答
5127 浏览

java - 继承代码:格式化还是不格式化?

我们的团队最近继承了非常混乱的代码。

因此,我的团队领导决定在保存文件之前强制执行代码自动格式化的策略。我们甚至在 Eclipse(我们选择的 IDE)中找到了一个选项,可以在每次保存操作之前自动格式化代码。

我个人反对它,因为我认为正确的编码可以防止混乱的代码(大多数时候),而自动格式化并不意味着正确的编码。

你有什么意见?