Verwenden von "this" in Setter

8

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%     
Chuck Wolber 11.08.2010, 17:07
quelle

9 Antworten

16

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:

%Vor%     
Kent Boogaart 11.08.2010, 17:10
quelle
7

Sie brauchen "das" nicht, da es keine Zweideutigkeit gibt. ("bar" und "_bar" sind anders. Wenn Ihr Feld auch "bar" heißt, würden Sie es brauchen)

    
Kirk Woll 11.08.2010 17:09
quelle
3

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.

    
Johannes Wachter 11.08.2010 17:33
quelle
2

Wenn Sie Setter in Java verwenden, kann this hilfreich sein, um den aktuellen Variablenbereich zu umgehen. Wenn du stattdessen

hättest %Vor%

Das würde die Klassenvariable anstelle der Funktionsvariablen

korrekt setzen     
Dave McClelland 11.08.2010 17:09
quelle
2
  

Ist 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.

    
T. Markle 11.08.2010 17:44
quelle
1

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.

    
AHungerArtist 11.08.2010 17:09
quelle
1

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.

%Vor%

Ein etwas künstliches Beispiel, aber Sie haben die Idee.

    
Jonathan Fingland 11.08.2010 17:09
quelle
1

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.

    
hvgotcodes 11.08.2010 17:11
quelle
1

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.

    
Robin 11.08.2010 17:33
quelle

Tags und Links