【发布时间】:2012-01-17 11:51:48
【问题描述】:
代码示例:
unit Foo;
TFoo = class
protected
FList: TList; // Lifetime is managed by constructor and destructor
public
property List: TList read FList;
constructor Create;
destructor Destroy; override;
end;
unit Bar;
TBar = class(TFoo)
procedure MyMethod;
end;
procedure TBar.MyMethod;
begin
// Access of FList goes here
end;
TBar 类可以直接修改 FList 的值,但这并不是绝对必要的,因为它只需要调用它的方法/使用它的属性。
我应该将 FList 设为私有并使用该属性从 TBar 访问它吗?
您如何处理此类案件?是否还有任何性能方面的考虑?
【问题讨论】:
-
这与stackoverflow.com/questions/8281582/…有些相关,但更具体。
-
无数次如果不是私密的,我已经找到了一些可以减轻我工作负担的东西。我相信许多其他人也这样做了,因为我见过完全忽略 private 并使用 protected 作为最严格范围的开发人员。 +1
-
@Sertac 当您无法控制其他代码时,这通常是一个问题。当您完全控制所有代码时,您可以使用
private甚至strict private,当它变得过于严格时,您可以根据需要放宽限制。 -
无性能考虑。我个人倾向于使用最严格的visibility specifier 可用以允许您的代码工作。这个建议是当您完全控制使用该类的所有代码时。如果您正在编写组件或库,那么您必须考虑到不是您的用户。那是一个不同的游戏,我不提供任何建议。
-
@David - 我认为在需要逐个访问代码片段之前,能够仔细构建代码非常重要。也有可能有人无法控制它,有时可能不得不使用它。
标签: delphi oop delphi-2007