gpt4 book ai didi

delphi - Delphi 是否有任何工具或插件可以用来帮助重构非面向对象的代码?

转载 作者:行者123 更新时间:2023-12-03 14:42:15 27 4
gpt4 key购买 nike

我正在使用一个大型代码库,其中包含如下单元:

unit myformunit;

interface
type
TMyForm = class(Form)
end;

procedure not_a_method1;

procedure not_a_method2;

var
global1,global2,global3:Integer;
...

简而言之,代码的作者写的不是方法,而是全局过程。他们有数以万计。在这些过程中,它们引用 MyForm:TMyForm 的单个实例。

我正在考虑编写一个解析器/重写器实用程序,将这段代码转换为“至少是最低限度的面向对象的代码”。作为开始,策略是将接口(interface)和实现部分全局变量移至表单中。我意识到这并不是优雅的 OOP。但这是比全局向前迈出的一步。

如果我可以一次在一个单元上执行此操作,如果我一次只在一张表单上执行此操作,我也许能够修复项目其余部分中的损坏。但我想减少重写单元所需的时间,而不是手工完成。有些表单有 500 多个过程和 500 多个接口(interface)和实现全局变量,这些变量实际上特定于它们位于同一单元中的表单的单个实例的状态。

基本上,如果不存在这样的东西,我会做的就是编写一个基于 Castalia Delphi 解析器的解析器。我希望 ModelMakerCodeExplorer、castalia 或其他类似工具至少能满足我的部分需求,这样我就不必自己构建这个实用程序。即使我确实必须自己构建它,我估计它也可以为我自动完成大约一千到两千小时的繁重工作。我至少可以运行它,然后查看有多少中断,然后在决定重构此代码的努力程度后恢复或提交。

实现相同目标的替代策略(从零封装和零 OOP,到更多封装和略高于零 OOP,以增量方式,在大型非结构化 delphi 代码库上,仅在不可避免时使用对象,并且从未对真正的 OOP 有任何想法)欢迎。

最佳答案

更改全局变量以形成字段似乎只是剪切和粘贴它们。您可能会考虑将它们移至虚拟过程中,并首先使用 MMX 规范化声明。

然后使用 ModelMaker Code Explorer 将过程和函数移动到表单中,该表单只需在成员 View 中剪切和粘贴即可。

不是必需的,但下一步将从方法体中删除对表单实例的引用。这可以通过查找和替换来实现。

或者我错过了什么?

关于delphi - Delphi 是否有任何工具或插件可以用来帮助重构非面向对象的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11110555/

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