Java: Was ist besser lesbar, "dies" oder nicht "das"

8

Sie müssen das Schlüsselwort "this" nicht wirklich in Java schreiben. Aber ist es besser, das trotzdem zu tun? Ist es sinnvoll, Ihren Stil zu homogenisieren, d. H. Wenn Sie "dieses" einmal verwenden, verwenden Sie es jedes Mal, wenn es impliziert wird? Oder gibt es einen Ort, an dem du ihn immer benutzen würdest und andere, wo du ihn nie benutzt?

    
Soyuz 18.02.2013, 09:07
quelle

5 Antworten

18

Der allgemeine Konsens besteht darin, dass Sie this nur verwenden sollten, wenn es notwendig ist und nicht zu einem anderen Zeitpunkt.

%Vor%     
OldCurmudgeon 18.02.2013, 09:08
quelle
6

In der Regel tendiere ich dazu, es nicht zu benutzen - wenn Sie überflüssigen Code reduzieren können, umso besser.

Es gibt jedoch drei Stellen, an die ich denken kann, wo dieses Schlüsselwort nicht vermieden werden kann:

  • Konstruktoren (delegiert an einen anderen Konstruktor derselben Klasse)

    %Vor%
  • Synchronisieren für das aktuelle Objekt

    synchronized(this) {

  • Übergeben Sie das aktuelle Objekt an eine andere Klasse

    %Vor%

Sie brauchen es manchmal in Konstruktoren, wo der Feldname mit dem Parameter übereinstimmt, aber das ist nicht wirklich obligatorisch, da Sie den Parameter einfach umbenennen könnten:

%Vor%

Abgesehen davon kann ich nicht an zu viele andere Szenarien denken, in denen ich das Schlüsselwort this verwenden würde. Ich habe gesehen, dass es überstrapaziert wurde (bei jeder Methode und Feldreferenz) und dies kann den Code sehr schwer lesbar machen.

Verwenden Sie es nur, wenn Sie müssen oder wenn Sie glauben, dass es die Lesbarkeit des Codes verbessert.

    
Sean Landsman 18.02.2013 09:37
quelle
3

Als allgemeine Regel sollten Sie redundante Syntax vermeiden, wo immer sie entstehen mag. Sie werden viele gegenteilige Meinungen lesen, die sich meistens auf einen gründlich mythischen Programmierer beziehen, der keine Mitgliedvariablen kennt, nicht weiß, wofür Klammern stehen und sich nicht an die Regeln der Operatorpräzedenz erinnern, die er als dritter gelernt hat Klasse. Ich habe ihn in 40 Jahren nie getroffen. Das ist nicht genug, um den Code für ihn zu entstellen, in der Annahme, dass er (a) es nicht versteht und (b) es deshalb bricht. Das habe ich noch nie gesehen.

Was ich gesehen habe, ist Code, den eine solche Person produziert hat. Das ist kein Grund, seinen eigenen Code für ihn herunterzuspielen. Die Gelegenheiten, bei denen jemand tatsächlich einen Code von mir falsch geschrieben hat, sind genau zwei: einmal im Jahr 1979, wo jemand eine Grammatik umstrukturierte, um die Vorrangstellung des Operators zu entfernen, die dumm war, und er hätte es nicht tun sollen es und ein anderes Mal in etwa 1992, aber in beiden Fällen hätte ich niemals die Grammatik oder den Code geschrieben, der es hätte verhindern können.

    
EJP 18.02.2013 09:14
quelle
2

Es gibt einige Stellen im Code, an denen Sie das Schlüsselwort this nicht überspringen konnten, z. Setter:

%Vor%

Aber wenn es möglich ist, ist es besser zu überspringen:

%Vor%     
bsiamionau 18.02.2013 09:10
quelle
-1

Im Kontext des Methodenaufrufs spielt nur die Verwendung von this eine Rolle, wenn Sie OuterClass.this.method() verwenden.

%Vor%     
Achintya Jha 18.02.2013 09:18
quelle