Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Schlüsselwortethis - immer oder nur wenn wirklich notwendig?
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.
> 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
"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.
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.
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?
@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.
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: 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
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.