【发布时间】:2014-01-09 00:22:06
【问题描述】:
对于只读属性,使用带有私有 getter 的属性和提供公共函数有什么区别:
function GetCount : Integer;
property Count : Integer read GetCount;
对比
function Count : Integer;
就调用语法而言,这两者似乎是相同的。我经常倾向于使用第二个,因为它的代码更少,尤其是在不能选择字段支持属性的接口中。
有什么不同吗? (当然仅限于只读属性)
【问题讨论】:
-
我认为区别主要在于未来可能的扩展。您可以将 getter 更改为函数或变量,您可以向其添加 setter,您可以将属性移动到发布部分,您可以创建一些基于 RTTI 的引擎以通过名称或注释等统一读取属性。甚至到点在基类中拥有两个具有相同 getter 的属性,并在专门的派生类中赋予它们不同的 getter(例如使用索引属性 getter)。也相关q:stackoverflow.com/questions/6391632
-
当你暴露一个函数时,你是在声明here be side effect。
-
@FreeConsulting 我通常会同意。在这种情况下,虽然代码读取完全相同
SomeType.Count- 所以你的观点只会在你写它的时候应用一次。 -
如果你不关心 RTTI 也没什么区别。
-
但是当您引用一个符号时,您可以轻松查找它是字段、属性还是方法。事实上,生产力工具正在为您做到这一点。
标签: delphi delphi-xe2