gpt4 book ai didi

.net - 如何将丑陋且未记录的 VB6 代码迁移到 .NET

转载 作者:行者123 更新时间:2023-12-03 11:05:39 25 4
gpt4 key购买 nike

我知道已经有关于 VB6 迁移的问题,但是我项目的代码库在这里带来了一些新问题。

我不得不说代码质量、结构和架构简直就是一场噩梦。
有2个大项目:
Nr.1 有 40 个表单、40 个模块和一些类文件,这个 EXE 是一种“基础系统”。
Nr.2 有 80 个表格,20 个模块和一些类文件,这个 EXE 调用函数形成了“基础系统”。
然后还有大约 10 个其他带有 GUI 的项目(每个 1-3 个表单)和另外 90 个非 GUI 项目,其中大部分是 EXE 文件,一些 DLL。 DLL 是用 C、C++ 和 VB6 编写的。

代码自 10 年以来不断发展,并且一次主要由 1 个(糟糕的)开发人员编写。

  • 具有 500 行(甚至更多)的函数非常常见。
  • 90% 的 GUI 组件被命名为 text1, command2(1), ...
  • 复制和粘贴无处不在 e. G。复制了一个包含 5000 行代码的 EXE 项目(没有 GUI),副本中唯一的变化是每个邮件而不是 FTP 发送文件(同一个项目还有 2 个副本)。
  • 我曾经有一个小表格(15 个字段),我应该解决一个小问题(通常最多半小时),每次我更改某些内容时,它要么不起作用,要么在表格中产生新的错误。 2 天后,我决定彻底重写表格,从旧表格中的约 20 条 SQL 语句中,只有 2 条在新表格中幸存下来。
  • 甚至不要询问代码中的注释...

  • 几个月前我接手了这个项目,我是唯一的维护者。变更请求和错误的流量持续(但很少),我们从客户那里获得维护预算,以保持软件运行并在法律要求方面“保持最新”。

    我的选项

    1) 从头开始​​重写——在这种情况下,我可以用 Java 编写它以实现可移植性。
    这里的问题是,除了一些(旧的)用户帮助外,没有文档,所以丑陋的代码就是“文档”。有一个人有高层知道软件应该怎么做。此外,很难说服管理层这样做,即使从长远来看可以节省大量成本,也存在政治问题。我也不能一次做一个(vb)项目,因为数据库结构并不比代码好,即也必须从头开始。所以我只能一次更改整个软件。

    2) 将代码迁移到 VB.NET/C#
    首先迁移主要项目,我已经对其进行了测试,并从 Project Nr.1 中获得了大约 2000 条升级评论,其中大部分是 Screen.MousePointer 发生了变化,函数返回值变体等等。
    我的想法是在转换之后,为 DB 抽象创建类,更改代码以使用这些类并进行重构,迁移和更改其他项目,当所有代码都使用 DB 类时,更改 DB 结构。

    3) 无论如何我必须在 VB6 中更改某些内容时重构代码(我已经部分地这样做了),并在某些时候重构其余部分。这样更容易看到原始功能,因为它是原始代码,当出现错误时,很明显它们不可能是迁移的结果。
    当代码被重构时(我假设它也会小 50-75%),将它迁移到 .NET 会更容易。然后更改数据库结构(然后进行另一轮重构……)。

    future 有一些更大的改变要做(使其与 Win7 兼容,以及另一个影响大部分代码的大 CR),所以会有一个很好的机会来做这些改变,因为我将不得不经历反正很多代码。

    我的问题是谁有迁移糟糕、丑陋的代码的经验/提示?您会建议哪些选项?

    最佳答案

    我不得不经历同样的事情(没有文档和可怕代码的大型 VB6 应用程序。)。您可以采取的唯一安全合理的路线是第 3 条。要改进某些东西,您必须首先了解它。如果您选择路线 1 或 2,您肯定会遇到可怕的困惑。

    请记住始终牢记您的最终目标是完全迁移到 .NET。在重构时,请考虑 VB6 糟糕的 OO 支持在 VB.NET 或 C# 中的样子。如果可能的话,改变你的代码以使迁移更容易。

    您可能需要考虑将许多核心功能转移到 .NET DLL 中,并通过 COM 将其公开给 VB6。这将从您的 VB6 中删除大量可笑的代码,并有望留下大部分业务逻辑。

    您需要记住的最重要的事情是不要成为牛仔。

  • 为模块编写测试。
  • 重构一个模块。
  • 测试模块。
  • 发布您的应用程序。
  • 转到 1
  • 关于.net - 如何将丑陋且未记录的 VB6 代码迁移到 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2101950/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com