delphi - 界面中的使用顺序是什么?

标签 delphi delphi-xe5

在将一些应用程序从 Delphi XE2 迁移到 XE5 时,我注意到列出了一些不再需要的单元。

这轮到我整理界面uses部分,这导致了我的问题。

界面中的单位有推荐顺序吗?我知道它们以相反的顺序加载,但我应该按 Usnit Scope 组织它们吗?

例如,MyCompany.* 应该列在开头还是结尾?我应该将 Vcl.* 放在 System.*

之前吗

更新

一般来说,我会在实现而不是接口(interface)中包含我的单元。我更多地了解 Delphi 自己的单元是否有层次结构......

例如,我遇到了一个问题,即在 System.SysUtils 之前列出 Windows 单元会更改所使用的 DeleteFile 版本...

明确的问题

使用顺序应该是

Winapi*、System.*、Vcl.*,还是反过来?

最佳答案

使用列表重构存在一些风险:

  • 以后使用的单位将覆盖符号(方法varsconsts、. ..) 之前使用的单位(范围界定)。

    这可能会(或多或少)在您的程序中引入 sublte 错误。

  • 重新排序单元可以更改 initializationfinalization 部分的运行顺序。

还有一些优点:

  • 编译速度更快

  • 较小的可执行文件(仅当任何已删除的单元具有初始化完成)

  • 避免/防止使用圆圈(尽管使用圆圈通常是次优 OOP 设计的标志)

话虽如此,在您的问题更新之后:

我倾向于做 David 已经写过的同样的事情:将单元从低级别排序到高级。

有一些工具可以帮助您找到未使用的单元并以最佳顺序排列已使用的单元。 (Peganza Icarus / PascalAnalyzerModelMaker)

很难说编译器真正做了什么(特别是因为现在有多个编译器),但是将依赖最少的单元放在第一位应该可以让编译器更容易构建依赖树。

关于delphi - 界面中的使用顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19091580/

相关文章:

delphi - 终端上的控制台应用程序

delphi - 让 Chrome 在第二台显示器上打开?

delphi - 分配一种类型的指针并将其作为不同类型但大小相同的指针进行处理可以吗?

delphi - 为动态数组分配内存 - block 头已损坏 (FastMM4)

delphi - 恢复 TDBGrid 中的水平滚动位置

java - Delphi xe5 exec root命令转换

delphi - 将当前Windows主题保存到vsf文件

delphi - 六角格计算

ios - 如何在通过线程执行工作负载时为微调器设置动画

android - 从 Delphi 访问 Android 的 SharedPreferences 类