Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Properties Public, Getter/Setter protected, Felder private (https://www.delphipraxis.net/175394-properties-public-getter-setter-protected-felder-private.html)

Der schöne Günther 18. Jun 2013 15:24

Properties Public, Getter/Setter protected, Felder private
 
Ich erstelle es bewusst in 'Klatsch und Tratsch' da es wahrscheinlich vollkommener Blödsinn ist.

Vor Urzeiten, als Moral und Anstand noch etwas galten, war ich der Meinung die Getter/Setter immer mit 'protected'-Sichtbarkeit auszustatten, üblich scheint private zu sein. Heute kann ich mir keinen Reim mehr darauf machen, warum ich mir das angewöhnt habe.

Könnte ich damals irgendeinen Grund gehabt haben? Auch wenn ich vor ein paar Jahren schonmal Berührungspunkte mit Delphi hatte: Als ich mir das angewöhnt habe, war das wahrscheinlich nicht unter Delphi sondern irgendwo anders. Fällt jemandem etwas ein?

Uwe Raabe 18. Jun 2013 15:26

AW: Properties Public, Getter/Setter protected, Felder private
 
  1. Man kann sie virtuell machen und überschreiben.
  2. Man kann sie auch in abgeleiteten Klassen als Implementation eines Interfaces verwenden.

DeddyH 18. Jun 2013 15:28

AW: Properties Public, Getter/Setter protected, Felder private
 
Evtl. hast Du mal einen Getter/Setter virtuell oder gar abstrakt deklariert, in dem Fall wäre er im private-Abschnitt ja schlecht aufgehoben.

[edit] Uwe war schneller :( [/edit]

Der schöne Günther 18. Jun 2013 15:29

AW: Properties Public, Getter/Setter protected, Felder private
 
Natürlich :wall:

Hauptmotivation war, die Getter/Setter in der Unterklasse wieder überschreiben zu können.


Großer Gott, es muss die Hitze sein.

stahli 18. Jun 2013 17:31

AW: Properties Public, Getter/Setter protected, Felder private
 
Mach Dir nix draus. Emba versteht das selbst auch nach Jahren nicht.

Ich dachte ja wenigstens, dass das mit der VCL-Alternative FMX jetzt mal neu organisiert wird... Umsonst gedacht! :wall::wall::wall:

Was ich mich schon geärgert habe deswegen. Ein QC-Eintrag bringt natürlich auch nix.
Nicht nur, dass man so funktionale Ableitungen kaum umsetzen kann, auch Bugfixes sind dadurch schwer möglich.

Und dabei wäre bei einer entsprechenden Beachtung nicht einmal ein Mehraufwand damit verbunden gewesen.

Regel Nr1: Methoden virtual oder static definieren
Regel Nr2: Private Abschnitte im Regelfall vermeiden.

Ich könnte mich gleich wieder...

Der schöne Günther 18. Jun 2013 17:55

AW: Properties Public, Getter/Setter protected, Felder private
 
Ja, die Class Completion packt auch immer die Getter und Setter in den private-Abschnitt. Auf die Schnelle habe ich auch nicht gefunden, wo man das in den Templates irgendwie abändern könnte - Das ist in der Class Completion wohl hart verdrahtet...

Furtbichler 18. Jun 2013 18:00

AW: Properties Public, Getter/Setter protected, Felder private
 
Also ich würde mich hüten, alles, was mal überschrieben werden könnte, als 'protected virtual' zu deklarieren. Und wieso sollte man private Abschnitte vermeiden? Mach doch gleich alles "public virtual", weil: Man kann nie wissen wozu das nützlich sein könnte...

:wall:

Die Außenwelt soll so wenig wie möglich über die Implementierung wissen und auch nur so wenig wie möglich verändern können. Genau genommen sollte nur das *nicht* private sein, was abgeleitete Klassen unbedingt wissen müssen und nur das als 'virtuell' deklariert werden, das -einmal überschrieben- das Wesen der Klasse nicht verändert und auch in seinem Sinne ist.

Aber klar, ich kann auch eine Klasse 'Dingens' deklarieren, die alles virtuell deklariert und aus der ich dann alles ableiten kann... Das ist aber dann kein OOP mehr, sondern MOORKS

stahli 18. Jun 2013 18:45

AW: Properties Public, Getter/Setter protected, Felder private
 
Das kommt auf den Blickwinkel an.

In der DP sind schon oft Bugs von Standardkomponenten beklagt wurden, die sich wegen privaten Feldern und/oder Methoden nicht beheben ließen (obwohl das sonst vielleicht mit 2 Zeilen behoben wäre).

Außerdem siehst Du das automatisch anders, wenn Du häufig allgemeine eigene Klassen erstellt bzw. von anderen Klassen ableitest.

Wenn eine Klasse protected virtual aufgebaut ist gibt sie genau so viel oder wenig preis, wie eine private. Allerdings wird späteren/anderen Entwicklern ermöglich, Korrekturen, Verbesserungen bzw. Veränderungen einzubauen. Ich sehe da keinen Nachteil sondern finde das weitsichtig.
(Wer sein Derivat vermurkst hat dann ja selbst Schuld.)

Der schöne Günther 19. Jun 2013 07:58

AW: Properties Public, Getter/Setter protected, Felder private
 
Zitat:

Zitat von Furtbichler (Beitrag 1218940)
Mach doch gleich alles "public virtual", weil: Man kann nie wissen wozu das nützlich sein könnte... :wall: [...] Das ist aber dann kein OOP mehr, sondern MOORKS

Großer Gott, Entschuldigung! (Für die globale Zerstörung der OOP)

Zitat:

Zitat von stahli (Beitrag 1218944)
Wenn eine Klasse protected virtual aufgebaut ist gibt sie genau so viel oder wenig preis, wie eine private. Allerdings wird späteren/anderen Entwicklern ermöglich, Korrekturen, Verbesserungen bzw. Veränderungen einzubauen.

Ganz genau das. Eine Unterklasse ist nicht die Außenwelt.

Furtbichler 19. Jun 2013 08:02

AW: Properties Public, Getter/Setter protected, Felder private
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1218983)
Großer Gott, Entschuldigung!!

Boah, nicht nur schön, sondern auch kreativ, der Günther.

Wenn ich Dir auf deinen goldenen(?) Schlips getreten bin oder auf deine Kroko-Schuhe, tut es mir echt leid. Ich wische sie sofort mit meinem rosa Tütü-Seidenserviettchen ab und poliere sie mit meiner Straußenpfeder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr.
Seite 1 von 2  1 2   

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