get-/ set- Methoden vermeiden

4 Antworten

Ich kann mich den anderen Antworten nur anschließen: Getter und Setter sind stark empfohlen über einfachen Attributzugriff.

Gründe dafür:

  1. Mehr Kontrolle über die Variable: die Attribute des Objektes können nur gesetzt und/oder gelesen werden, anderer Schabernack wie Inkrementierung wird somit ausgeschlossen.
  2. Bei Zugriff können Überprüfungen und Verarbeitungen eingebaut werden, um kritische Programmfehler zu vermeiden.
  3. Das Referenzieren von Methoden und Attributen eines Objektes wird nicht so sehr gemischt, dass der Code unschön wird.
  4. Arbeiten mit den Attributen kann mit passenden (Methoden-)Namen verständlicher gemacht werden, die Java-Sprachelemente sind nicht immer so selbsterklärend.

Im Ganzen unterstützten Getter und Setter sogar das Prinzip der Kapselung, da sie zusätzlich zum Scope noch weitere Einschränkungen erlauben. Ausserdem ist Kapselung nur eine Hilfe für den Programmierer, das kompilierte Programm wird diese "Umwege" sowieso (meist) rausoptimiert haben.

Jedes seriöse Tutorial, Buch oder jeder guter Lehrer wird zu genanntem raten.

Mir ist noch nie untergekommen das man sie vermeiden sollte.  Außerdem können Sie nützlich sein. Folgendes beispiel: du hast eine Set Methode in der klasse als Public deklariert und die variable als private wenn die variable 0 wird stürzt das Programm ab und die Welt geht unter.  wenn du jetzt im Team entwickelst kannst du eine Sicherung einbauen das der variablen wert nie auf null gesetzt wird um mögliche Fehler von anderen zu erkennen und zu vermeiden (bei 0 wird du hast die Welt zerstört ausgegeben)  oder so ähnlich.  

susa222 
Fragesteller
 02.03.2015, 15:48

Danke für die Antwort. Vielleichtt wurde auch die Standard set-Methode gemeint, welche keine Überprüfung/Sicherung hat. Aber was wäre dann mit der getter Methode gemeint ? :S

0

Man sollte sie nicht unbedingt vermeiden, es ist aber besser, wenn man sie durch andere Methoden mit höherer Kohäsion ersetzen kann.

Anstatt

public void setValue(int value) {
this.value = value;
}

public static void main(String[] args) {
setValue(++value);
}


Sollte man dann lieber eine Methode benutzen, die wiefolgt funktioniert

public void increaseValue() {
value++;
}

Öffentliche Methoden sollten immer nur einen einzigen Zweck haben und nicht als "Allrounder" dienen.

Trotzdem sind Getter/Setter unbedingt notwendig.

susa222 
Fragesteller
 02.03.2015, 14:42

Danke für die Antwort. Deine Antwort ist verständlich, aber noch nicht das, was ich mit der Frage gemeint habe ....

0
Unkreatiiiev  02.03.2015, 14:58
@susa222

Dann solltest du darüber nachdenken, deine Fragen konkreter zu stellen.

0

Ich habe noch nie was davon gehört, dass man das vermeiden sollte. Es wurde mir eher sogar empfohlen, diese Methoden zu verwenden.

Würde mich also auch interessieren, wieso man diese nicht nutzen soll ^^