在界面中使用什么顺序?

时间:2013-09-30 10:11:37

标签: delphi delphi-xe5

虽然将一些应用程序从Delphi XE2移到XE5,但我注意到列出了许多不再需要的单元。

这将引导我整理界面使用部分,这导致了我的问题。

界面中是否有推荐的单位订单?我知道它们是以 reverse 顺序加载的,但是我应该由Usnit Scope组织它们。

例如 MyCompany。 *应该在开头还是结尾列出?我应该在系统之前放置 Vcl。 *。 *

更新

一般情况下,我会将我的单位包含在实施中,而不是界面。我正在更多地了解德尔福自己的单位是否存在等级......

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

明确问题

使用顺序是

Winapi *,System。*,Vcl。*,或反过来?

3 个答案:

答案 0 :(得分:4)

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

  • 以后使用的单位将覆盖之前使用的单位(范围)的符号(methodsclassesvarsconsts,...)。< / p>

    这可以将(或多或少)sublte错误引入您的程序。

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

还有一些优点:

  • 编译速度更快

  • 较小的可执行文件(仅当已移除的单元有initializationfinalization

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

说完后,在你的问题更新之后:

我倾向于做大卫已经写过的事情:将单位从低级别排序到高级别。

有些工具可以帮助您查找未使用的单位,并以最佳顺序排列使用过的单位。 (Peganza Icarus / PascalAnalyzerModelMaker

很难说编译器真正做了什么(特别是因为现在有多个编译器),但是首先放置依赖性最小的单元应该使编译器更容易构建依赖树。

答案 1 :(得分:3)

答案 2 :(得分:0)

TMS软件是Delphi的许多组件的作者-在其blogpost上推荐以下顺序:

uses  
  // 1. fpc/lazarus/delphi units,  
  // 2. 3rd units,  
  // 3. my open source units,  
  // 4. project units  

在我看来,这实际上是最好的选择。您可以更改顺序。重要的是要记住,当函数/类名使用的单位大于单位时,将使用最后一个单位。