如果我将一个单元放在单元的实现部分的uses子句中,则在该单元中声明的标识符不可用于接口部分。
这样做有什么好处,而且无法在界面中使用被引用单位的标识符?
如果您在实现部分中添加使用过的单位而不是简单地在接口部分进行操作,是否有任何实际优势(例如避免不必要的副作用)?
答案 0 :(得分:13)
将单位添加到uses
部分的implementation
子句允许该单元仅对implementation
而非interface
的私有依赖。如果UnitA使用UnitB,但UnitA之外没有人关心UnitA是否使用UnitB,因为UnitA的接口不使用UnitB,那么为什么要宣传依赖关系并使interface
混乱?此外,如果您需要删除UnitB和/或将其替换为其他内容,请在uses
部分的implementation
子句中声明它,以避免interface
更改会影响任何单位正在使用UnitA。
答案 1 :(得分:5)
最大的问题是接口部分的使用会导致循环依赖和编译失败。如果单元A在接口部分使用单元B,则单元B不能在其接口部分使用单元A.
因此,您经常被迫在实现部分中使用至少一些用途。
否则我个人更愿意尽可能将单位使用放入界面部分。范围和隐藏的主要原因。如果存在名称范围冲突(两个单元定义相同的名称,第二个使用隐藏第一个),则整个单元中的相同名称都在范围内。