代碼示例:將字段保護起來是不是一個好主意?
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訪問它嗎?
你如何處理這種情況?是否有任何性能方面的考慮?
這有點與http://stackoverflow.com/questions/8281582/using-properties-instead-of-fields-in-class-methods-of-the-same-unit-is-a-bad-公關,但更具體。 – 2012-01-17 11:56:10
*無數次*如果東西不是私人的,我會碰到一些能夠緩解我工作的東西。我相信很多其他人也是這樣做的,因爲我已經看到開發人員完全忽略* private *並且使用* protected *作爲最嚴格的範圍。 +1 – 2012-01-17 12:10:59
@Sertac當你無法控制其他代碼時,這通常是一個問題。當你完全控制所有的代碼時,你可以使用'private'甚至'strict private',當它變得太嚴格時,你可以根據需要放寬限制。 – 2012-01-17 12:18:23