我不得不说代码质量,结构和架构只是一个噩梦。
有两个大项目:
Nr.1与40个表单,40个模块和几个类文件,这个EXE是一种“基础系统”。
Nr.2有80个表单,20个模块和几个类文件,这个EXE调用函数形成“基本系统”。
那么还有〜10个其他的GUI(每个1-3个表单)和另外90个非GUI项目,其中大部分是EXE文件,一些DLL。 DLL用C,C和VB6编写。
“守则”自十年来一直发展壮大,一次大部分由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#
主要项目的迁移首先,我测试了已经和从项目Nr.1获得〜2000升级评论,其中大部分是像Screen.MousePointer改变的东西,变量返回值的函数等等。
我的想法在转换之后,创建DB抽象的类,更改代码以使用这些类,并重构,迁移和更改其他项目,当所有代码使用DB类时,更改DB结构。
3)重新设计VB6中的代码,只要我不得不改变某些东西(我已经在做这部分),而某些点重构也是其余的。这样就可以很容易地看到原始的功能,因为它是原始的代码,当有错误时,很明显它们不能是迁移的结果。
当代码被重构(我认为它将比它小50-75%),它更容易迁移到.NET。然后更改DB结构(然后再做一轮重构…)。
将来有一些更大的变化(使它与Win7兼容,另一个影响代码大部分的大CR),所以这将有一个很好的机会来做这些改变,因为我必须经历很多的代码无论如何。
记住要始终把想法放在你的头脑中,你的最终目标是完全迁移到.NET。正如您正在重构的那样,考虑VB6可怕的OO支持将如VB.NET或C#中所示。如果可能,您的代码可能会转移,以使迁移更容易。
您可能需要考虑将大量的核心功能转移到.NET DLL中,并通过COM将其暴露给VB6。这将从您的VB6中删除可笑的代码量,并希望大部分业务逻辑。
你需要记住的最重要的事情不是牛仔。
>为模块编写测试。>重构一个模块。>测试模块。>释放你的应用程序> GOTO 1