gpt4 book ai didi

delphi - 不将小类拆分成单独的文件的优点是什么?

转载 作者:行者123 更新时间:2023-12-03 15:09:09 29 4
gpt4 key购买 nike

我有一个“uObjects”单元。它有几个扩展 TCollection/TCollectionItem 的不同类型的对象。曾经,将所有这些小类全部分组在一个文件中可能很有意义,因为事情很小并且它们有点相关,然后您就不必担心无数的文件。

但随着时间的推移,越来越多的方法被添加到其中一些集合中,这使得管理变得更加困难,因此我正在考虑将 uObjects 单元分解为多个更小的单元,以使其更易于维护。

但在此之前,我想知道是否有任何我应该了解的警告。这是我应该义无反顾地继续做的事情吗?或者是否有任何原因我可能(也许在某些情况下)不想将一个单元的不相关部分分解为多个单元?这可能会带来问题吗?我仍在尝试理解来自 Java 世界的 Units 的细微差别,在 Java 世界中,在单个文件中包含多个类通常不是一种选择。

最佳答案

主要问题是循环依赖。假设您有以下类(class):

type
TClass2 = class;

TClass1 = class
FObj1 = TClass2;
end;

TClass2 = class
FObj2 = TClass1;
end;

正如此处所写,循环依赖将这些类绑定(bind)在同一个文件中。这是因为循环依赖只能通过前向声明来实现。并且前向声明不能跨多个文件应用。

您可能遇到的另一个问题是私有(private)和 protected 成员可见性。在同一文件中,该文件中定义的私有(private)成员和 protected 成员始终对该文件中的其他代码可见。这是正常可见性规则的一个特殊异常(exception),是 Delphi 的一个功能。

当您将类移动到不同的文件时,您可能会发现编译失败,因为其他类中的私有(private)和 protected 成员不再可见。

与 Java 相比,有关类/文件关系的 Delphi 习惯用法有所不同。紧密协作的类通常定义在同一个文件中。另一方面,如果类 A 在不知道类 B 的情况下存在良好,那么这两个类通常可以放置在不同的文件中。

关于delphi - 不将小类拆分成单独的文件的优点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23669564/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com