Getter & Setter immer in der Erstellung einer Klasse schreiben?

...komplette Frage anzeigen

5 Antworten

Nein, es gibt auch nur lesbare Eigenschaften. (Und sogar nur schreibbare Eigenschaften, aber ich halte das für sehr schlechten Stil.)

(Und dann kannst du auch öffentliche Felder deklarieren. Die werden intern in private Variablen mit öffentlichen Getter und Setter umgesetzt.)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von CrystalixXx
09.04.2016, 08:52

Ich habe in meiner ganzen Zeit der Programmierung noch nie einen (sinnvollen) Verwendungszweck für eine WriteOnly-Eigenschaft gefunden. Ich fand bisher einfach keinen Grund / Nachteil, weshalb ich die entsprechende Eigenschaft nicht auch lesbar machen sollte.

Ich halte WriteOnly daher für überflüssig. Aber vielleicht kennt jemand eine sinnvolle Möglichkeit. Ich bin gespannt! : )

0

Nein, man muss gar nix. Es hängt immer vom speziellen Kontext ab wo eine Implementierung von getter/setter Sinn macht. Manchmal ist es auch einfach nur eine Stilfrage. In einem Domain Model welches an eine konkrete Datenquelle gemapped wird ist eine Implementierung von getter und setter Methoden in der Klasse üblich um einen Einfluss auf die Properties zu nehmen. 

Antwort bewerten Vielen Dank für Deine Bewertung

Mit settern will man eigentlich erreichen, dass der Zustand eines Objekts "von außen" nicht unkontrolliert verändert werden kann (indem man bei den settern entsprechende Prüfungen vornimmt)

Mit gettern erreicht man, das die externen Nutzer der Klasse nicht auf implementierungspezifische Dinge wie meist Membervariablen zugreifen - und man die Implementierung dadurch gefahrlos ändern kann.

Getter und Setter haben darüberhinaus auch einen Dokumentationseffekt - ein Verwender der Klasse weiß an welchen "Schrauben" er drehen darf und soll.

Innerhalb der Klasse ist das weniger bedeutend - zumal man den Zugriff von Methoden auf Membervariablen sowieso nicht verhindern kann.

Manchmal machen getter und setter trotzdem auch "intern" Sinn - wenn  man jede Änderung der Variable "kontrollieren" will oder bei Gettern eine Variable erst dann initalisieren möchte wenn zum ersten Mal auf sie zugegriffen wird - aber nicht so eindeutig ist wann und ob das das passiert.

Mit korrekter Syntax hat das nichts zu tun - syntaktisch korrekt kann ein Programm auch dann sein wenn es komplett auf Getter und Setter verzichtet.

Antwort bewerten Vielen Dank für Deine Bewertung

Willst du oder fragst du ob du das machen sollst?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ReginaSuperSofi
08.04.2016, 21:53

Der Text wurde vorhin nicht übernommen und musste diesen neu schreiben

0
Kommentar von triopasi
08.04.2016, 21:55

Ah okay. Nein musst du nicht und sollst du auch nicht! Attribute die nicht direkt änderbar/abrufbar sein sollen bekommen keine getter/setter.

0

Nein es werden nur getter und setter erstellt die einen Sinn haben

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ReginaSuperSofi
08.04.2016, 21:56

Laut Definition einer Klasse oder laut "Programmierer Faulheit"? Ich kann alle Setter und Getter auf private setzen, dann habe ich was ich will, aber wozu dies machen falls ich weiterhin laut Definition korrekt bin und diese weglassen kann.


 

0
Kommentar von janwelter
08.04.2016, 21:58

Private Getter und Setter haben ja keinen logischen Sinn.

0
Kommentar von triopasi
08.04.2016, 22:00

Getter und Setter sind normale Methoden. Schreibst ja sonst auch keien sinnlosen Methoden, oder?

0

Was möchtest Du wissen?