在将一些应用程序从 Delphi XE2 迁移到 XE5 时,我注意到列出了一些不再需要的单元。
这轮到我整理界面的uses部分,这导致了我的问题。
界面中的单位有推荐顺序吗?我知道它们以相反的顺序加载,但我应该按 Usnit Scope 组织它们吗?
例如,MyCompany.* 应该列在开头还是结尾?我应该将 Vcl.* 放在 System.*
之前吗更新
一般来说,我会在实现而不是接口(interface)中包含我的单元。我更多地了解 Delphi 自己的单元是否有层次结构......
例如,我遇到了一个问题,即在 System.SysUtils 之前列出 Windows 单元会更改所使用的 DeleteFile 版本...
明确的问题
使用顺序应该是
Winapi*、System.*、Vcl.*,还是反过来?
最佳答案
使用列表重构存在一些风险:
以后使用的单位将覆盖符号(
方法
、类
、vars
、consts
、. ..) 之前使用的单位(范围界定)。这可能会(或多或少)在您的程序中引入 sublte 错误。
重新排序单元可以更改
initialization
和finalization
部分的运行顺序。
还有一些优点:
编译速度更快
较小的可执行文件(仅当任何已删除的单元具有
初始化
或完成
)避免/防止使用圆圈(尽管使用圆圈通常是次优 OOP 设计的标志)
话虽如此,在您的问题更新之后:
我倾向于做 David 已经写过的同样的事情:将单元从低级别排序到高级。
有一些工具可以帮助您找到未使用的单元并以最佳顺序排列已使用的单元。 (Peganza Icarus / PascalAnalyzer 和 ModelMaker)
很难说编译器真正做了什么(特别是因为现在有多个编译器),但是将依赖最少的单元放在第一位应该可以让编译器更容易构建依赖树。
关于delphi - 界面中的使用顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19091580/