Namenskonvention für Getter / Setter in Java

28

wenn ich das folgende private Mitglied habe:

%Vor%

Wie soll ich meinen Getter / Setter nennen?

%Vor%

oder

%Vor%

BEARBEITEN: oder

%Vor%

?

    
Simon 01.06.2010, 08:01
quelle

7 Antworten

30

Die richtige Antwort ist

%Vor%

Wenn Sie möchten, dass sie als Eigenschaften gemäß Abschnitt verwendet werden. 8.8: Groß- / Kleinschreibung der abgeleiteten Namen des JavaBeans API-Spezifikation (z. B. Zugriff auf sie über $ {object.xIndex} in einer JSP .

    
Thomas Einwaller 22.04.2013, 11:36
quelle
6

Sollte sein:

%Vor%     
Samuel Yung 01.06.2010 08:03
quelle
1

Methoden sollten Verben sein, in Großbuchstaben mit dem ersten Buchstaben in Kleinbuchstaben, wobei der erste Buchstabe jedes internen Wortes großgeschrieben wird.

    
ayush 01.06.2010 08:55
quelle
0

Sie sollten Introspector.decapitalize aus dem Paket java.beans verwenden und Sie haben kein Problem, weil es mit Java-Regeln konform ist.

    
Hervé Darritchon 23.02.2015 14:59
quelle
0

Eclipse ide generiert automatisch Setter und Getter als:

%Vor%

Dies entspricht der API-Spezifikation für Java-Beans.

    
Bipin Thakur 22.05.2016 18:34
quelle
0

In Übereinstimmung mit JavaBeans API Spezifikation von 1997 Es sollte so sein, wie Thomas Einwaller beschreibt.

%Vor%

Das ist bedauerlich, getx und setx sind keine Wörter, weshalb der Code in seltenen Fällen auch von IntelliJ generiert wurde erhält eine Warnung von IntelliJ. Obwohl dies der JavaBeans-Spezifikation entspricht, verstößt es gegen die Konvention für Benennen einer Methode . In dem seltenen Fall, dass dies ein Wort oder ein Akronym bilden würde, wäre es desinformativ, zB die Methode setiMessage most hat wahrscheinlich nichts mit SETI zu tun. die einzig gültige Messung der Codequalität (WTFs pro Minute), Ich bewerte das das ist schlechter Code .

Es kommt alles auf diesen Satz der JavaBeans-Spezifikation an:

  

Um jedoch die gelegentliche Verwendung aller Großbuchstaben zu unterstützen, prüfen wir, ob die ersten beiden Zeichen des Namens sind     beide Großbuchstaben und wenn ja, lass es in Ruhe.

Welche Art der Verwendung aller Großbuchstaben darauf zutrifft, ist mir unklar. Feldnamen sollten laut Konvention , sei Kamel gefasst. Es scheint Deutsch:. Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32 Ich erstelle für mich unkonventionelle Methodennamen, um unkonventionelle Feldnamen zu unterstützen, so wie es von a 20+ Jahre altes Dokument.

Es sollte auch beachtet werden, dass, obwohl es eine überwältigende Unterstützung für die JavaBeans-Spezifikation in Tools zu sein scheint, es wird nicht ausschließlich verwendet. Z.B. Kotlin erkennt xIndex nicht als Eigenschaft im obigen Beispiel. Umgekehrt, die Die Kotlin-Eigenschaft var xIndex = 0 führt zu den Java-Methoden getXIndex und setXIndex . Dies scheint ein Fehler zu sein nach der JetBrains-Unterstützung, aber ich sehe nicht, wie sie das beheben können, ohne eine Bremsänderung vorzunehmen.

Einige Tools, die die JavaBeans-Spezifikation unterstützen, haben dies nicht immer getan, zB Jackson und Swagger Code Generator wurden gepatcht, um dem zu entsprechen. Obwohl IntelliJ Accessoren gemäß der JavaBeans-Spezifikation generiert, ist das Beispiel in der Dokumentation unterscheidet sich davon. Wahrscheinlich, weil die Leute nichts über den Standard wissen und natürlich den normale Methodenbenennungskonvention.

Also, wann sollten wir der JavaBeans-Spezifikation folgen? Wenn Eigenschaftsnamen von Accessoren durch Tools abgeleitet werden sollten, die Verlassen Sie sich auf diesen Standard, dann möchten wir ihn vielleicht verwenden. Zum Beispiel wird Jackson vertrauen auf die Eigenschaft xIndex wird über die Methoden getxIndex und setxIndex zugegriffen, es sei denn, wir verwenden Annotationen.

Wann sollten wir diesen Standard vermeiden? Nach meiner Empfehlung: Wenn der Code von Menschen gelesen und verstanden werden soll. Weil die Verwendung von Camel Cases bei Benennungsmethoden nicht desinfizierend ist.

Wenn ich es so hätte, würden wir normale Namenskonventionen verwenden, zB getXIndex und setXIndex . Aber angesichts des Staates von den Dingen, die beste Lösung, die ich sehe, wird von @vaxquis vorgeschlagen:

  

Benennen Sie Ihr Feld "indexX" oder was auch immer, Ihr Problem ist gelöst ... Dinge nicht zu komplizieren - auch wenn setxIndex     ist der richtige Weg für Beans, die Methode namens setxIndex erhöht den WTF-Faktor des Codes, ohne Ihnen zu geben     alles im Gegenzug.

Alle Kommentare bezüglich der JavaBeans-Spezifikation sollten gemäß der Spezifikation selbst gesendet werden [email protected].

    
Love 18.03.2018 14:25
quelle
-1

Ich denke getXindex() ist der beste Weg. Der Getter sollte mit "get" beginnen, gefolgt von dem Mitgliedsnamen, wobei der erste Buchstabe großgeschrieben wird. Auch die neuesten Konventionen, von denen ich gehört habe, sagen, dass wir mehrere Großbuchstaben nacheinander vermeiden sollten. Zum Beispiel ist getHTMLtooltip falsch. Es sollte stattdessen getHtmlTooltip sein. Auch sollten Sie versuchen, alle Ihre Mitglieder final zu machen und es sollte keine Notwendigkeit für Setter geben, da die Klasse unveränderlich sein wird;)

    
m_pGladiator 01.06.2010 08:09
quelle