我有一个很大的代码库,我正在使用这样的单位:
unit myformunit; interface type TMyForm = class(Form) end; procedure not_a_method1; procedure not_a_method2; var global1,global2,global3:Integer; ...
总之,代码的作者没有写方法,他们写了全局程序.有数以万计的.在这些过程中,它们引用了一个MyForm的实例:TMyForm.
我正在考虑编写一个解析器/重写器实用程序,将该代码变成“至少面向对象的面向代码”.该策略是将界面和实现部分全局变量作为开始.我意识到这是非常优雅的OOP.但这是全球化的一步.
如果我一次可以在一个单位做到这一点,我可以修复项目其余部分的破损,如果我一次只能在一个表单上.但是,我想减少重写单位所需的时间,而不是用手来做.一些表单有500个程序和500个接口和实现全局变量,其实际上是与单个实例的状态相同的单个实例.
基本上,如果没有这样的话,我会做的是写一个基于Castalia Delphi解析器的解析器.我希望也许ModelMakerCodeExplorer或者castalia或者其他类似的工具有一些东西,至少会做一些我需要的一部分,所以我不必自己构建这个实用程序.即使我自己也要自己建造,我估计可能会为我自动化一千到二千小时的工作.我可以至少运行它,然后看看多少休息,然后在我决定重构这个代码的努力水平之后恢复或提交.
完成相同目标的替代策略(从零封装和零OOP,到更多的封装以及稍微超过零的OOP,以递增的方式,在一个大的非结构化的delphi代码库中,只有当它不可避免时才使用对象,而从来没有有任何关于真实OOP的想法)受到欢迎.