问题标签 [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 投票
4 回答
790 浏览

legacy - 您如何从遗留代码上的 FxCop 开始?

有没有人有将 FxCop 引入遗留代码的经验?如果有人引入违反规则的代码,我们希望我们的构建失败。但就目前而言,这是不可能的,因为遗留代码有超过 9000 次违规。

我所知道的抑制错误的唯一方法是通过 SuppressMessage 属性,但这仅适用于方法和 GeneratedCodeAttribute。最后一个可以用于类和命名空间(如果我没记错的话),但不应该用于非生成代码(参见此处)。

现在,我们每天都会花一些时间来消除违规行为,但会不断引入新的违规行为,因为我们的构建不会失败。

有任何想法吗?

0 投票
3 回答
265 浏览

c# - 理论上是否可以从 C# 访问任何库(也就是 PInvoke 在幕后做了什么)?

像很多地方一样,我的工作场所有遗留代码以及更现代的应用程序。例如,我们有一个仍然使用 Microsoft Fortran77 编译器的服务器应用程序。应用程序中较旧的部分是为 Visual Studio 6 C 编译器编写的,最近出现了一些使用 VS .Net 2008 C++ 编写新库的案例。程序/库有许多不同的机制来相互消费/通信,包括静态链接、共享内存(Windows 内存映射文件)、名称管道和 TCP 套接字。

是什么阻止了 C# 应用程序能够使用任何旧库,例如用过程语言编写的 Fortran77 库之一?

如果我的 C# 应用程序理解 Fortan77 或 C 库的文件格式并且能够找到它想要的过程调用,它是否可以编组托管对象,调用该过程并解组结果?

如果我将 .so 库文件从 Linux 复制到 Windows,并且我的 C# 应用程序理解文件格式,它是否可以调用该库中的函数?

我认为答案与初始化每个库/程序所需的各种 Fortran、C 等运行时有关。如果是这样,那么从根本上说,这些运行时是否与 CLR 大体相似(在 CLR 的情况下,它们具有不同的功能,例如内存管理等)?

编辑:

以另一种方式提出我的问题。如果外星人进来并给了我一个二进制库文件和文件格式规范,我可以从 C# 中使用它吗?

0 投票
3 回答
8628 浏览

vb6 - Vista 上的 VB6 应用程序运行缓慢,带有大量“FAST IO DISALLOWED”

我有一个客户端正在运行他们在 Vista 上编写的自定义 VB 6 应用程序。该应用程序在 Vista 上安装并运行良好。但是,在一台 Vista PC 上,应用程序的加载和运行速度非常慢。我让 IT 运行了一个进程监控跟踪,我看到了大量的“FAST IO DISALLOWED”结果以及其他问题。什么会导致“FAST IO DISALLOWED”,我该如何解决?请参阅下面的部分跟踪:

更新:似乎应用程序加载正常,但在打开报告等时运行缓慢。

更新:我有一个工作正常的 PC 的踪迹。但是,我相信缓慢是因为他们离开了 ODBC 跟踪。有很多这样的:


0 投票
4 回答
1040 浏览

.net - 如何重构 WinForms 应用程序?

我将在不久的将来修复 WinForms 应用程序 (.NET 2.0)。通过查看源代码,我发现大型代码文件(超过 2000 行)其中大多数是生成的对话框,其中包含大量代码隐藏。

有没有人可以分享我的建议?任何关于错误修复或重构 WinForms 应用程序的战争故事或最佳实践?

0 投票
4 回答
156 浏览

svn - 遗留代码的版本控制帮助

我正在为遗留系统寻找某种备份/版本控制方法:

  • 系统是在 BASIC 版本中开发的。这是一个解释版本。程序保存在一些伪代码中;不是纯文本。
  • 所有制作程序都存储在同一个文件夹树中,根据类别分为文件夹。
  • 没有颠覆策略,除了将要修改的程序的先前版本存储到名为old_versions的子文件夹中。每个类别文件夹中都有一个old_versions子文件夹。示例:/programs/accounts_payable/old_versions/
  • 程序在生产环境中即时修改。
  • 系统在 Solaris 服务器上运行

我想要一些实时备份的方法,每个修改的程序,存储在一个单独的位置。 没有什么花哨。它不需要进行回滚或更改比较。它只需要保存程序的最新版本

谢谢。

PS:是的,我真的很生气,很绝望。

0 投票
7 回答
1583 浏览

legacy-code - Modula-2 开发者?

猜猜没有新项目可以用 Modula、Ada、Oberon 等语言实现了(对吧?)。但是仍然有遗留系统四处飘荡,到处寻找它们的创造者。他们找不到他们,因为他们可能会退休,坐在海滩上享受自己的地方。

严肃:
1)我想知道周围是否还有活跃的(有经验的)Modula 程序员?
2) 有人将 Modula 代码移植到新一代硬件吗?
3) 有谁知道可以重新设计的工具,即以图形方式映射程序和 Mod 文件。这些工具可用于例如。C 程序。

当然,与今天的 .net 和具有 1000 种方法的 Java API 相比,Modula Syntax 并没有那么令人惊叹,但是如果有人向您丢下大约 100.000 行几乎没有记录的源代码(与大约 8000 行汇编程序很好地混合在一起),您最好知道您是否最好拒绝它。我有这个要求,我很抗拒。(选项:移植并保留模源或在 9 个月内迁移到其他语言!)

干杯

0 投票
3 回答
111 浏览

integration - 设计最终将合并到旧应用程序中的新应用程序的方法

目前我在一个用 C# 开发新的独立应用程序的团队中。最终目标是将这个独立的应用程序滚动到以前开发的与相同流程相关的更大的应用程序中。

我的问题是:我正在寻找有关方法或流程的信息,以帮助 A) 设计所述较新代码,特别是当旧代码不是最好的最可维护的系统时,以及 B) 集成所述较新应用程序。

显然没有什么特别的,我们的应用程序在设计上是独一无二的,因此将有任何方法无法帮助的细节。但是,我有兴趣获得有关该主题的一些良好的一般知识。

编辑: 到目前为止的建议,重构旧代码,将新代码构建为模块的容器,并在单元测试中覆盖新旧代码,总的来说都是很好的实践,也是我尽可能练习的事情。但在我看来,这些将是整体方法论的各个部分。

0 投票
1 回答
145 浏览

.net - 从 DataGrid 1.0 中检索行顺序

我正在使用 .net 1.1 的旧版应用程序,我需要检索数据网格后排序中的行(通过单击列标题)。这听起来像是一件容易的事,然而,答案似乎让我难以捉摸。我可以很好地从数据集中检索行,但是单击标题时它们不会再次排序。

0 投票
2 回答
167 浏览

legacy-code - 在大型项目中处理潜在可重用遗留代码的正确礼仪是什么?

我一直想知道解决这种情况的最佳方法是什么。如果有人决定再次将该功能添加到项目中,将旧代码留在注释块中的最佳方法是,还是为了保持源代码的清洁和可读性而删除此代码?

0 投票
2 回答
77 浏览

c# - 从旧版 C++ 应用程序使用自定义 .net 控件的最佳方式是什么?

我维护一个遗留应用程序(非托管 C++),我需要一个新控件(基本表单)。为了简单起见,我想在 C# 中构建此控件,但在我的旧版应用程序中使用它。有什么建议么?