Защитить поля - это хорошая идея?

Пример кода:

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?

Как вы справляетесь с подобными случаями? Есть ли какие-нибудь соображения по поводу производительности?

7
задан Jens Mühlenhoff 17 January 2012 в 11:51
поделиться