为什么要声明成员 public 而不是发布?

Why ever declare members public instead of published?

将成员声明为 published 优于 public:

那么声明成员 public 而不是 published 有什么好处吗? published 有什么缺点吗?或者我应该总是声明成员published,作为一项规则?


PS:不重复;在发布我的问题之前,我阅读了该问题及其所有答案。 "possible duplicate" 问题解释了这两个关键字之间的区别,但没有给出何时应该使用任何一个或 advantages/disadvantages 使用任何一个的指导。

声明为已发布会增加存储成本,因为您的可执行文件的大小已经膨胀到包含 RTTI。声明为 public 可避免该成本。这不太可能重要,特别是考虑到现代 Delphi 可执行文件的巨大规模,其中包含大量甚至从未执行过的代码。

对于可以在对象检查器中编辑的组件,publicpublished 之间的区别更为显着。正如您所说,这就是组件如何确定哪些属性在对象检查器中可见。有些属性应该在那里可见,有些则不可见。用户 "TLama" 给出了需要 public 但不应在对象检查器中编辑的属性的很好示例:ParentHandle 等等。

除此之外,归结为意见。完全由您决定要做什么。