Sauberer Programmierstyle: Klassenvariaben in Methoden benutzen?

FYoshi

Neues Mitglied
Hallo, Mal eine allgemeine Frage zum sauberen Programmierstyle...

Sollte man aus einer Methode heraus direkt Klassenvariablen lesen und schreiben oder nur die übergebenen Variablen benutzen?

Natürlich geht es hier nicht um getter und setter sondern um andere Funktionen im Allgemeinen.

Ich persönlich finde den Zugriff von Klassenvariablen als Risikoreich da so eine Funktion zahlreiche Seiteneffekte erzeugen kann.
Weiterhin verletzt die Benutzung imho. das Blackboxprinzip einer Funktion. Ändert sich z.B. die Struktur einer Klassenvariable so müßte jede Methode, welche die Variable, benutzt intern angepasst werden.

Aber was meint Ihr dazu?

Viele Grüße
Yoshi
 
S

SlaterB

Gast
komische Frage,
alle nicht-statischen Methoden, also quasi alles wichtige, worum es bei Objektorientierung überhaupt geht,
ist von Klassenattributen abhängig, von Objekten mit sich ändernden Zustand, Lebenszyklus usw.

Funktionen sind es dann nicht, richtig, sondern wirklich Methoden im definierten Sinne

wie soll eine Klasse Quadrat ihre Fläche ausrechnen ohne auf die Seitenlänge zuzugreifen?
wie soll man in ein JTextField etwas eintippen, was später schön angezeigt wird und wieder abfragbar ist,
wenn das nicht gespeichert wird?
 

Marco13

Top Contributor
Ich finde, dass man eigentlich, theoretisch und wenn man bestimmte ... Prinzipien konsequent weiterdenkt auch innerhalb einer Klasse die Variablen nur über set/get-Methoden ansprechen sollte. Aber wie sollte man das erzwingen? Was wäre dazu nötig? Ein http://www.java-forum.org/allgemeine-java-themen/44575-staerkerer-access-modifier-private.html ;) JA. Aber das macht man natürlich nicht. Hängt vielleicht auch damit zusammen, dass bei Java das Uniform access principle - Wikipedia, the free encyclopedia eben nicht gilt... damit wäre das quasi automatisch abgedeckt. Aber wenn man die Wahl hat, in einer Methode ein
Code:
somePrivateInt++;
zu schreiben, oder
Code:
setSomePrivateInt(getSomePrivateInt()+1);
ist's ja klar, was man macht...
 

Landei

Top Contributor
Ich finde, dass man eigentlich, theoretisch und wenn man bestimmte ... Prinzipien konsequent weiterdenkt auch innerhalb einer Klasse die Variablen nur über set/get-Methoden ansprechen sollte.
...

I beg to differ! Getter und Setter sind die Antithese zum äußerst nützlichen Uniform access principle, das ich inzwischen schätzen und lieben gelernt habe. Getter und Setter sollten überflüssig sein, wenn man sie nicht braucht, und später nachträglich einzufügen, ohne dass sich an der Zugriffssyntax etwas ändert. Auf Variablen sollte genauso zugegriffen werden wie auf parameterlose Methoden (was z.B. erlauben würde, in einer Personen-Klasse die Variable "alter" durch eine Funktion zu ersetzen, die selbiges aus dem neu zur Klasse hinzugekommenen Geburtsjahr zu berechnen).
 

Marco13

Top Contributor
Vielleicht ist das falsch angekommen: Ich wollte ja genau das sagen - nämlich dass man, wenn es das UAP in Java geben würde, sich darum ja keine Gedanken machen müßte, weil dann jede Verwendung einer privaten Variablen quasi "automatisch und transparent in die verwendung einer set/get-Methode umgewandelt wird". Aber so wie es jetzt ist kann man eben innerhalb der Klasse eben direkt die Variable ändern, obwohl im setter vielleicht was wichtiges gemacht wird, und man eigentlich DEN verwenden sollte....
 

Ähnliche Java Themen

Neue Themen


Oben