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