Ich sehe keinen wirklichen Unterschied zwischen den beiden folgenden Methoden, einen Setter zu erstellen, aber ich habe mich gefragt, ob ich nur naiv bin. Ist eine mehr wünschenswert als die andere?
%Vor% In diesem Fall gibt es keinen semantischen Unterschied, da es keine Mehrdeutigkeit gibt. Wenn Ihr Instanzfeld andererseits auch bar
genannt wird, dann wird this
benötigt, um zu disambiguieren:
Die verschiedenen Stile werden meistens dadurch verursacht, was ein Programmierer vor Java gemacht hat, welche Kodierungsstandards in der Firma vorhanden sind, usw.
Der gewünschte Stil ist zu verwenden:
%Vor%Dies ist eine Art Best-Practice-Stil und entspricht den JavaBeans Standard.
Wenn Sie Setter in Java verwenden, kann this
hilfreich sein, um den aktuellen Variablenbereich zu umgehen. Wenn du stattdessen
Das würde die Klassenvariable anstelle der Funktionsvariablen
korrekt setzenIst eine mehr wünschenswert als die andere?
Hängt von dem Bereich ab, den Sie verwenden möchten -
%Vor%Ich verwende gerne "this.variable", wenn ich auf eine Klassenvariable verweise. Sie werden feststellen, dass Eclipse auch Klassenvariablen in blau hervorhebt, in denen lokale Variablen schwarz bleiben, was hilfreich sein kann.
Ich bevorzuge den zweiten Weg, nur weil es dem Leser klar ist und es konsistent ist, da es benötigt wird, wenn der Parameter und das Feld beide gleich benannt sind (wenn es notwendig ist, um das zu unterscheiden, was gesetzt wird). Es gibt jedoch keinen funktionalen Unterschied zwischen den beiden in diesem Beispiel.
this
ist explizit und wird deshalb von vielen bevorzugt. In einigen Fällen ist der Unterschied jedoch signifikant. z.B. eine Membervariable und eine lokale Variable mit demselben Namen.
Ein etwas künstliches Beispiel, aber Sie haben die Idee.
Ihre Einstellungen sollten
sein %Vor%und
%Vor%um den Javabean-Konventionen zu entsprechen.
Wenn der Referenzname im Setter (foo) mit der Eigenschaft für die Klasse übereinstimmt, sollten Sie 'this' verwenden, um explizit zu sein.
Wie schon gesagt wurde, ist es unzweideutig, aber ich ziehe es vor, dies auch nicht zu verwenden.
Ich würde mit so etwas gehen, was auch Mehrdeutigkeiten verhindert, indem ich dem Variablenzweck explizitere Namen gebe.
%Vor%Dies wäre meine erste Wahl, die zweite wäre, das dies zu verwenden, ich würde die Unterstriche nicht berücksichtigen.
Tags und Links java