有没有区别 - Delphi在接口或实现后使用单元?

时间:2015-10-14 10:35:05

标签: delphi

如果可以在接口部分或实现之后放置一个单元,那么代码性能方面是否存在差异?哪一个更受欢迎?

例如,

unit Example;

interface 

uses
  UnitA;  // preferred here?

implementation

uses
  UnitA;  // or here?

end.

2 个答案:

答案 0 :(得分:6)

  

代码性能方面有区别吗?

我不清楚这意味着什么。如果你想知道它是否改变运行时性能,那么没有。如果你的意思是别的,请定义你的意思。

  

哪一个更受欢迎?

这取决于。如果需要在导入单元接口部分中引用导入单元中的符号,则必须将该单元导入接口部分。如果您只在实现部分中引用导入的符号,则可以这样做。

如果Unit1使用Unit2Unit2使用Unit1,则他们不能同时导入接口部分。这导致循环引用错误。逃避的一种方法是将其中一个导入移动到实现部分。

答案 1 :(得分:3)

代码性能,没有。在调用实际单元初始化部分之前,将调用所用单元的所有初始化部分。

但它确实会影响编译器和链接器如何解析名称。通常,使用较小的范围(实现)会更好,除非需要更大的范围(接口)。它将有助于最大限度地减少循环引用等问题,并且更好地“封装”#34;实施细节。