Schlüsselworte this - immer oder nur wenn wirklich notwendig?

B

buzz.dev

Gast
ich sehe öfter, dass manche Programmierer "this" eigentlich immer vor ihre Variablen schreiben. also auch an Stellen, an denen es eigentlich (zumindest für mein Verständnis) nicht notwendig wäre.

kleines Beispiel:
Java:
	public String toString() {
		return this.numerator + "/" + this.denominator;
	}

Ist das "besserer" Code bzw. eine Konvention für mehr Übersichtlichkeit, Eindeutigkeit oder bessere Lesbarkeit?
 
S

SlaterB

Gast
> Ist das "besserer" Code bzw. eine Konvention für mehr Übersichtlichkeit, Eindeutigkeit oder bessere Lesbarkeit?

alles was du da nennst kann man als dasselbe bezeichnen, und darum gehts, ja ;)

die Variable numerator zu nennen statt n wäre strenggenommen auch nicht nötig,
man wählt aber lange Namen, man schreibt this für alle Instanzattribute, oder eben nicht
 

Kevin94

Top Contributor
"Besser" ist der Code im eigentlichen Sinne nicht, aber es beugt Bugs vor und ist eindeutiger, weshalb es in als gute Manieren angesehen wird immer so zu programmieren bzw. in vielen Teams zu den Conventions gehört. In den offiziellen Java-Conventions steht es afaik aber nicht.
 

njans

Top Contributor
Da scheiden sich die Geister. Einige verwenden gerne this, andere vermeiden es.
Manche bevorzugen sowas:
Java:
public MyClass(int value, String input)
{
  this.value = value;
  this.input = input;
}
Andere haben lieber:
Java:
public MyClass(int newValue, String newInput)
{
  value = newValue;
  input = newInput;
}
Das ist Geschmackssache. Ich persönlich verwende den this Aufruf nur bei Methoden, wenn ich hervorheben will, dass es sich um eine eigene Methode handelt (im Kontext von Grafischen Komponenten). Ob das sinnvoll ist, ist sicherlich fraglich. Aber daran kann man sehen, dass es eben auf den jeweiligen Programmiere ankommt.
 
B

buzz.dev

Gast
na ja, zwischen "n" (absolut nichtssagender Name, der in einem Programm sicher hundertmal in verschiedenen Funktionen vorkommt) und "numerator" (sprechender Name, der genau bezeichnet, wofür diese Variable steht) ist aber schon ein gewaltiger Unterschied.

insofern wundert es mich ein bisschen, dass "this" vor jeder Variable zu mehr Übersichtlichkeit führen sollte - für mich sieht das eher wie unnötiger Ballast aus. aber vielleicht ist es einfach gewöhnungsbedürftig, wenn man es ohne "this" gelernt hat. viele Bücher scheinen das ja auch nicht so genau zu nehmen.

gibt es irgendwo eine Seite, die all diese (in-)offiziellen Konventionen was den Programmier- bzw. Formatierstil angeht zusammenfasst?
 
B

buzz.dev

Gast
@njans: ich glaube, du hast die Frage nicht ganz verstanden. es ging um jene Stellen, an denen "this" absolut unnötig (siehe mein Beispiel mit toString!) ist. sobald gleich bzw. ähnlich lautende Parameter ins Spiel kommen, kann man ja noch mit Eindeutigkeit argumentieren.
 
S

SlaterB

Gast
ein Mischen, mal verwenden, mal nicht, kommt teils nicht gut in Frage,
nämlich wenn man eine IDE-Unterstützung hat, die jedes vergessene this mit einer Warning anmeckert,
dann stören die Warnings.., falls man sie nicht mit einer Annotation in einem Bereich unterdrückt

anderseits kann eine IDE Instanzattribute auch gut farbig abheben, dann ist this viel weniger nötig als im einfachen Texteditor
 

njans

Top Contributor
@njans: ich glaube, du hast die Frage nicht ganz verstanden. es ging um jene Stellen, an denen "this" absolut unnötig (siehe mein Beispiel mit toString!) ist. sobald gleich bzw. ähnlich lautende Parameter ins Spiel kommen, kann man ja noch mit Eindeutigkeit argumentieren.
Wenn es unnötig ist, dann, so finde ich, sollte man es lassen. In deinem Beispiel macht es keinen Sinn this zu schreiben, die Methode hat keine lokalen Variablen und keine Parameter.
Wie SlaterB auch schon sagte: IDEs highlighten Klassen und Instanzvariablen. Auf den this Aufruf würde ich hier absolut verzichten.
Allerdings: Sobald man eben in einem Projekt mit anderen sitzt, muss man sich einigen, wie der Stil aussehen soll. Und da kann ich mir gut vorstellen, dass es dazu kommt, dass man eben this. schreiben muss ;)
 
B

buzz!dev

Gast
ich sehe schon, da hat wohl jeder so seine eigenen Ansichten und da bis jetzt niemand auf eine offizielle Java-Konvention gelinkt hat, behaupte ich mal, dass es so eine nicht gibt.

aber der Hinweis auf die IDE war hilfreich, denn bei genauerem Hinsehen habe ich eine Funktion gefunden, die automatisch ein "this" zu jeder Instanzvariable hinzufügt. somit kann man das mit ein paar Mausklicks auch noch Nachträglich annotieren, wenn es einmal wirklich notwendig sein sollte.

also danke für alle Antworten!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
ruutaiokwu final wenn immer möglich verwenden? Java Basics - Anfänger-Themen 30
L Bedingung immer false, auch wenn zwei Strings gleich sind Java Basics - Anfänger-Themen 11
krgewb Immer dieselbe Zufallszahl Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
F Warum muss ich ein SSL cert immer manuell hinzufügen? Java Basics - Anfänger-Themen 46
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
J Componente immer in Front halten, wie? Java Basics - Anfänger-Themen 5
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
D Codeblöcke, die immer wieder im Programmverlauf benötigt werden Java Basics - Anfänger-Themen 5
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
I Array übernimmt immer den letzten Input. Java Basics - Anfänger-Themen 14
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
M Untersuchen ob ein Graph nach entfernen einer Kante immer noch zusammenhängend ist Java Basics - Anfänger-Themen 70
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
CptK Methoden Event bei gedrückter Maustaste immer wieder ausführen Java Basics - Anfänger-Themen 1
CptK Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
IMain23 2d Array variabler Spaltenwert, Spaltenwert immer um eins erhöhen Java Basics - Anfänger-Themen 3
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
N Arbeitsspeicher nach kompilieren immer voller Java Basics - Anfänger-Themen 6
S Immer das selbe mit den Schleifen Java Basics - Anfänger-Themen 24
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
B Operatoren Java berechnet immer 0? Java Basics - Anfänger-Themen 3
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
I Methoden Schleife immer wieder durchlaufen lassen Java Basics - Anfänger-Themen 15
3 JFrame immer im Hintergrund Java Basics - Anfänger-Themen 1
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
J Operatoren Random wird nur einmal erstellt und dann immer verwendet Java Basics - Anfänger-Themen 2
S Repaint() in der Schleife funktioniert nicht immer Java Basics - Anfänger-Themen 5
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
N Immer Aktiv sein. Java Basics - Anfänger-Themen 8
D Array wird immer mir 100 für jeden Wert initialisiert? Java Basics - Anfänger-Themen 2
J Ergebnis immer 0 Java Basics - Anfänger-Themen 8
S If-Anweisunng ist IMMER true Java Basics - Anfänger-Themen 2
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
S UserPref und Java Application klappt immer nicht. Java Basics - Anfänger-Themen 2
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4
F String immer weiter nach Bedarf vergrößern Java Basics - Anfänger-Themen 3
X Muss man das immer so schreiben o.O Java Basics - Anfänger-Themen 3
F Timer beendet nicht immer Java Basics - Anfänger-Themen 2
N Boolean Werte - immer "false" Java Basics - Anfänger-Themen 5
P JavaFX Textfelder geben immer null zurück Java Basics - Anfänger-Themen 8
M zufälliges Setzen von Schiffen in while klappt nicht immer Java Basics - Anfänger-Themen 3
S Random IDs immer 10-stellig? Wie? Java Basics - Anfänger-Themen 5
B Klassen Objekte werden immer überschrieben Java Basics - Anfänger-Themen 10
T Muss ein Parametertest immer eine eigene Testklasse sein? Java Basics - Anfänger-Themen 3
C JavaMail funktioniert nicht immer Java Basics - Anfänger-Themen 8
J .txt Datei "einlesen "und in String speichern ergibt immer NULL Java Basics - Anfänger-Themen 17
M Noch immer Probleme mit exec Java Basics - Anfänger-Themen 15
A Java Arrays immer um eins "vergrößern" Java Basics - Anfänger-Themen 4
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
R Hashset.add(Array) liefert immer true? Java Basics - Anfänger-Themen 23
I immer die gleiche Zufallszahl Java Basics - Anfänger-Themen 9
F Funktion immer zur vollen Stunde? Java Basics - Anfänger-Themen 3
A Warum immer das "J" im Klassennamen? Java Basics - Anfänger-Themen 10
M Erste Schritte Eclipse führt immer das gleiche Programm aus Java Basics - Anfänger-Themen 6
A Wieso wird immer 0 ausgegeben? Java Basics - Anfänger-Themen 4
C 2 Objekte, 1 immer Null? Java Basics - Anfänger-Themen 8
P Classpath falscher Classpath, aber nicht immer Java Basics - Anfänger-Themen 19
E JButtons auf JFrame nicht immer sichtbar Java Basics - Anfänger-Themen 4
Helgon Observer Pattern - hasChanged() immer false Java Basics - Anfänger-Themen 10
P toString-Methode gibt immer null vor Variable aus Java Basics - Anfänger-Themen 9
L Immer diese Arrays Java Basics - Anfänger-Themen 11
M OOP Graphics immer selbstbezihend Java Basics - Anfänger-Themen 12
D . ist nicht immer .!? Java Basics - Anfänger-Themen 18
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
L JTextField getText() gibt immer null zurück Java Basics - Anfänger-Themen 10
J \n funktioniert nicht immer Java Basics - Anfänger-Themen 10
L Woerterbuch liefert immer "null" Java Basics - Anfänger-Themen 41
J Datentypen Math.sqrt() immer NaN Java Basics - Anfänger-Themen 8
T Datei so speichern das sie immer erreichbar ist Java Basics - Anfänger-Themen 2
Os-Programming Checkbox immer wieder überprüfen Java Basics - Anfänger-Themen 13
E Input/Output Datei immer weiter erweitern Java Basics - Anfänger-Themen 4
D Muss ich eigentlich immer auf die Verwendung des richtigen Datentyps achten? Java Basics - Anfänger-Themen 7
B if erzeugt nur immer ein FALSE Java Basics - Anfänger-Themen 2
M Tabelle mit immer sortiertem Inhalt Java Basics - Anfänger-Themen 5
F Midi-Sequenzer gibt immer denselben, schrägen Ton aus? Java Basics - Anfänger-Themen 2
M isHidden() von java.io.File liefert immer true in Windows Java Basics - Anfänger-Themen 3
A Immer wird "gut" ausgegeben Java Basics - Anfänger-Themen 14
G Immer mehr Threads beim Selbstaufruf der main-Methode Java Basics - Anfänger-Themen 3
N immer Setter-Methoden verwenden? Java Basics - Anfänger-Themen 54
M immer noch usedelimiter Java Basics - Anfänger-Themen 4
R ARRAY/List die sich immer wieder von vorne neu auffüllt ? Java Basics - Anfänger-Themen 21
Y JFrame immer im Focus ? Java Basics - Anfänger-Themen 7
N ArrayList wird immer um zwei Elemente erweitert Java Basics - Anfänger-Themen 9
J cast zu int immer 0.. Java Basics - Anfänger-Themen 6
B Process.getInputStream immer leer Java Basics - Anfänger-Themen 3
T ArrayList immer die letzte Zeile Java Basics - Anfänger-Themen 2
C Array ist befüllt, doch gibt sie immer 0 zurück Java Basics - Anfänger-Themen 3
F Immer nur drei Werte lesen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben