如果可以在接口部分或实现之后放置一个单元,那么代码性能方面是否存在差异?哪一个更受欢迎?
例如,
unit Example;
interface
uses
UnitA; // preferred here?
implementation
uses
UnitA; // or here?
end.
答案 0 :(得分:6)
代码性能方面有区别吗?
我不清楚这意味着什么。如果你想知道它是否改变运行时性能,那么没有。如果你的意思是别的,请定义你的意思。
哪一个更受欢迎?
这取决于。如果需要在导入单元接口部分中引用导入单元中的符号,则必须将该单元导入接口部分。如果您只在实现部分中引用导入的符号,则可以这样做。
如果Unit1
使用Unit2
,Unit2
使用Unit1
,则他们不能同时导入接口部分。这导致循环引用错误。逃避的一种方法是将其中一个导入移动到实现部分。
答案 1 :(得分:3)
代码性能,没有。在调用实际单元初始化部分之前,将调用所用单元的所有初始化部分。
但它确实会影响编译器和链接器如何解析名称。通常,使用较小的范围(实现)会更好,除非需要更大的范围(接口)。它将有助于最大限度地减少循环引用等问题,并且更好地“封装”#34;实施细节。