【发布时间】:2010-01-20 14:20:39
【问题描述】:
我知道已经有关于 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 条在新表格中幸存下来。
- 甚至不要在代码中询问 cmets ...
几个月前我接手了这个项目,我是唯一的维护者。变更请求和错误持续(但很少)流,我们从客户那里获得维护预算,以保持软件运行并根据法律要求“保持最新”。
我的选项
1) 从头开始重写 - 在这种情况下,我可以用 Java 编写它以实现可移植性。 这里的问题是除了一些(旧的)用户帮助之外,没有文档,所以丑陋的代码就是“文档”。有一个人有高层知道软件应该怎么做。此外,很难说服管理层这样做,即使从长远来看可以节省大量成本,也存在政治问题。我也不能一次做一个(vb)项目,因为数据库结构并不比代码好,即也必须从头开始。所以我只能一次更改整个软件。
2) 将代码迁移到 VB.NET / C# 首先迁移主要项目,我已经对其进行了测试,并从 Project Nr.1 中获得了大约 2000 个升级 cmets,其中大部分内容如 Screen.MousePointer 已更改,具有变体返回值的函数等。 我的想法是在转换之后,为 DB 抽象创建类,更改代码以使用这些类并进行重构,迁移和更改其他项目,当所有代码都使用 DB 类时,更改 DB 结构。
3) 无论如何我必须在 VB6 中更改某些内容时重构代码(我已经部分地这样做了),并在某些时候重构其余部分。这样更容易看到原始功能,因为它是原始代码,当出现错误时,很明显它们不可能是迁移的结果。 当代码被重构时(我假设它也会小 50-75%),将它迁移到 .NET 会更容易。然后更改 DB 结构(然后进行另一轮重构……)。
将来会有一些更大的更改(使其与 Win7 兼容,以及影响大部分代码的另一个大 CR),所以会有一个很好的机会来做这些更改,我将有无论如何都要通过很多代码。
我的问题是谁有迁移糟糕、丑陋的代码的经验/提示?您会建议哪些选项?
【问题讨论】:
-
jobs.stackoverflow.com ;-)
-
我使用选项 2 做了一个 25,000 多行的 Excel 插件。
标签: .net vb6 vb6-migration