6

我发现某些类型的代码清理和重构由于难以将单元添加到大型项目的使用子句而变得非常困难。

我想在单个项目中的所有 delphi .pas 单元的 interface-uses-clause 中添加一个单元,这意味着在 500 多个地方手动执行此操作。每次我重构一个巨型单元并将其从一个单元拆分为两个时,我可能可以使用“notepad++”之类的东西进行搜索和替换,将“MyOldUnit”更改为“MyOldUnit,MyNewUnit”,但有时,这样做并不安全. 它还遗漏了“MyOldUnit”是uses 子句中最后一件事的情况(“uses MyOldUnit;”)。

无论如何,在文件中搜索和替换是危险的事情。如果不存在这样的工具,我正在考虑使用 Castalia delphi 解析器编写一个。我检查了 GExperts、Castalia、ModelMakerCodeExplorer,但它们都没有办法将单元批量插入到项目中的所有使用子句中。我希望有一个工具可以做到这一点。

其次,在许多情况下,我将一个函数从一个不属于另一个单元的单元移动,但这意味着我需要将该单元添加到项目单元的 30%,而不是其他 70% 的单元已经存在添加。这意味着需要解析器方法,而不是正则表达式方法。

4

1 回答 1

3

因为我们都编写代码,我们肯定会在其他项目中使用。如果您将接口部件从一个单元移动到另一个单元,您将破坏您的项目。与新旧单位相同。

但是您可以在不破坏项目的情况下进行重构。只需将部分(单元、类、方法、过程)标记为已弃用。您的代码正在运行,但编译器会警告您。

这是将程序从一个单元移动到另一个单元的示例:

unit Foo;

interface

procedure FooProc; deprecated; // new location in unit FooNew

implementation

uses
  FooNew;

procedure FooProc;
begin
  FooNew.FooProc;
end;

end.
于 2012-10-14T01:34:05.433 回答