Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Propertyzugriff innerhalb einer Klasse (https://www.delphipraxis.net/110348-propertyzugriff-innerhalb-einer-klasse.html)

Die Muhkuh 16. Mär 2008 22:39


Propertyzugriff innerhalb einer Klasse
 
Hi,

spielt es eine Rolle, ob ich innerhalb meiner Klasse auf eine Property zugreife oder sollte ich direkt auf die private Variable zugreifen?

Delphi-Quellcode:
  TRobiWorkField = class(TGraphicControl)
  private
    FRowCount: Integer;
    FTileSize: Integer;
    FColCount: Integer;
  public
    procedure Init(aRows, aCols, aTileSize: Integer);

    property TileSize: Integer read FTileSize;
    property RowCount: Integer read FRowCount;
    property ColCount: Integer read FColCount;
  end;

procedure TWorkField.Init(aRows, aCols, aTileSize: Integer);
begin
  FRowCount := aRows;
  FColCount := aCols;
  FTileSize := aTileSize;

  // Um die nächsten zwei Zeilen geht es
  Height := FRowCount * FTileSize;
  Width := FColCount * FTileSize;
end;
Ich könnte ja statt FRowCount auch auf die Property RowCount zugreifen. Gibt es irgendwelche Unterschiede oder ist das Käse Wurst?

Ich bin mir nicht sicher, aber ich meine gelesen zu haben (kennt man ja :mrgreen: ), dass man die privaten Felder bevorzugen sollte.

Luckie 16. Mär 2008 22:43

Re: Propertyzugriff innerhalb einer Klasse
 
Bei einem direktem Zugriff wird eben nicht der Getter bzw. Setter aufgerufen.

Die Muhkuh 16. Mär 2008 22:45

Re: Propertyzugriff innerhalb einer Klasse
 
Das hieße, dass es in obigem Beispiel keinen Unterschied macht, da kein Getter bzw. Setter vorhanden ist?

Luckie 16. Mär 2008 22:51

Re: Propertyzugriff innerhalb einer Klasse
 
Richtig.

Zacherl 16. Mär 2008 22:54

Re: Propertyzugriff innerhalb einer Klasse
 
Da du innerhalb des Objectes auf die Property zugreift würde ich die private Variable setzen, aber das ist mehr eine Sache des Stils wie ich finde.

Luckie 16. Mär 2008 23:00

Re: Propertyzugriff innerhalb einer Klasse
 
Ich würde über die Properties gehen und noch Getter und Setter hinzufügen, auch wenn diese nichts machen. aber eventuell will man ja im Setter noch eine Validierung ausführen oder ein Ereignis aufrufen. Funktioniert von aussen dann ach wunderbar, man sucht sich aber dann dumm und dusselig, warum es aus der Klasse selber heraus nicht klappt, weil man dort direkt auf die Attribute zugreift.

Dax 17. Mär 2008 00:52

Re: Propertyzugriff innerhalb einer Klasse
 
Zitat:

Zitat von Luckie
Ich würde über die Properties gehen und noch Getter und Setter hinzufügen, auch wenn diese nichts machen. aber eventuell will man ja im Setter noch eine Validierung ausführen oder ein Ereignis aufrufen. Funktioniert von aussen dann ach wunderbar, man sucht sich aber dann dumm und dusselig, warum es aus der Klasse selber heraus nicht klappt, weil man dort direkt auf die Attribute zugreift.

(Das ist jetzt .NET, aber egal) Für solche Fälle - Daten, die ich selbst nur über Properties benutzen will - habe ich mir angewöhnt, die Felder zu markieren und die Properties dafür entsprechend ebenfalls. Wenn ich nun aus einer Methode heraus auf das Feld zugreife, schlägt mein Validator Alarm und zeigt mir, wo ich was falsch gemacht hab ;) Ist bisweilen ganz nützlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz