是否有任何Delphi工具或加载项可用于帮助重构非面向对象的代码?

War*_* P 10 delphi oop refactoring encapsulation

我有一个很大的代码库,我正在使用它有这样的单位:

unit myformunit;

interface
type
  TMyForm = class(Form)
  end;

  procedure not_a_method1;

  procedure not_a_method2;

  var
     global1,global2,global3:Integer;
  ...
Run Code Online (Sandbox Code Playgroud)

简而言之,代码的作者没有编写方法,他们编写了全局程序.有成千上万的人.在这些过程中,它们引用了单个实例MyForm:TMyForm.

我正在考虑编写一个解析器/重写器实用程序,它将把这个代码变成"至少是面向对象的代码".策略是将接口和实现部分全局变为表单,作为开始.我意识到这不是优雅的OOP.但这是全球化的一步.

如果我一次可以在一个单元上执行此操作,我可能能够修复项目其余部分的破损,如果我一次只能在一个表单上执行此操作.但我想,以减少而不是做手工的时候需要重写单位的金额.有些表单有500多个过程和500多个接口和实现全局变量,实际上,这些变量特定于它们与同一单元中的单个表单实例的状态.

基本上,如果没有这样的话,我会做的就是编写一个基于Castalia Delphi解析器的解析器.我希望也许ModelMakerCodeExplorer,或者castalia,或其他类似的工具有一些东西至少可以做我需要的一部分,所以我不必自己构建这个实用程序.即使我必须建立它自己,我估计它可能会自动大约有一千至2000小时咕噜工作的我.我至少可以运行它,然后看看有多少中断,然后在我决定重构这段代码的努力之后还原或提交.

实现相同目标的替代策略(从零封装和零OOP,到更多封装,稍微超过零OOP,以增量方式,在大型非结构化delphi代码库上,仅在不可避免的情况下使用对象,并且永远不会对真正的OOP有任何想法,欢迎.

Uwe*_*abe 1

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

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

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

或者我错过了什么?