Einzelnen Beitrag anzeigen

Pilloker
(Gast)

n/a Beiträge
 
#1

Gundsatzfrage: Zugriff auf Feld über Namen oder Property?

  Alt 28. Jul 2009, 13:11
Hallo,

ich habe eine Klasse, die verschiedene Variablen besitzt, die ich im Private-Abschnitt deklariert habe.
Für den Zugriff von außen habe ich eine entsprechende Property mit Getter- und Setter-Methoden angelegt, bzw. automatisch durch Delphi anlegen lassen.

Meine Frage ist nun aber, wie man von 'innen' also von der Klasse selber aus auf diese Felder zugreift.
Macht man das generell über den Namen, also bspw. fBlabla oder generell auch über die Property, oder ist das von der jeweiligen Situation abhängig?

Gibt es diesbezüglich irgendein 'Regelwerk', an das man sich halten sollte?

Der Grund meiner Frage ist folgender:
Nehmen wir mal an, dass ich bisher in der Klasse ausschließlich über den Feldnamen direkt auf die Variable zugegriffen habe.
Nun merke ich, dass ich auf dieses Feld auch von außen zugreifen muss, und erstelle mir ein entsprechendes Property.
Ich überschreibe die automatisch generierte Setter-Methode, die ja per fBlabla := Value einfach direkt auf die Variable zugreift, und erweitere sie um ein paar Plausibilisierungen.

Damit ich nun auch bei Zugriffen von 'innen' von diesen Plausibilisierungen profitieren kann, müsste ich sämtliche Zugriffe, die jetzt noch direkt auf den Feldnamen gehen, durch die Property ersetzen.

Klar könnte man jetzt sagen, dass genau dieser Umstand doch ein eindeutiges Indiz dafür sei, dass man stets über die Property geht, und niemals direkt über den Feldnamen; auch nicht innerhalb der eigenen Klasse.

Ad hoc würde ich sagen, dass nur die Initialisierung mit Defaultwerten im Constructor per Direktzugriff auf das Feld geht und alles andere über Properties; auch von 'innen'.

Aber soll ich für jedes Feld eine Property anlegen, und dann darüber zugreifen, nur weil es sein könnte, dass ich irgendwann mal einen etwas umfangreicheren Getter/Setter benötige?
Und wo sollte ich die Properties dann deklarieren, um den Zugriff von außen (auch in Ableitungen) erstmal zu unterbinden? Im Private-Teil? Sieht doch irgendwie seltsam aus.
Auf der anderen Seite müsste ich die Sichtbarkeit dann nur noch auf protected/public erhöhen, wenn ich das Feld dann irgendwann doch mal von außen zugänglich machen möchte.

Hmm, irgendwie drehe ich mich im Kreis.

Wie handhabt Ihr das?
  Mit Zitat antworten Zitat