[JAVA] Punkt 68: Beachten Sie die allgemein anerkannten Namenskonventionen

68. Befolgen Sie die Namenskonventionen

Namenskonvention

Java-Namenskonventionen sind in JLS 6.1 gut organisiert. Grob gesagt können Namenskonventionen in typografisch und grammatikalisch unterteilt werden.

typographical

Paketname, Modulname

Paket- und Modulnamen werden hierarchisch durch durch Punkte getrennte Komponenten dargestellt. Komponenten werden durch Kleinbuchstaben (und selten durch Zahlen) dargestellt. Beginnen Sie bei Paketen, die außerhalb Ihres Unternehmens verwendet werden, mit dem verkehrten Internet-Domain-Namen Ihres Unternehmens (z. B. com.google). Diese Regel gilt nicht für Standardpakete, die mit Java und Javax beginnen. Benutzer dürfen keine Pakete oder Module erstellen, die mit Java oder Javax beginnen. Detaillierte Regeln für die Verwendung des Internetdomänennamens als Paketpräfix sind in JLS 6.1 beschrieben.

Der Rest des Paketnamens besteht aus einem oder mehreren Komponentennamen. Komponentennamen werden im Allgemeinen als kurze Zeichenfolgen mit bis zu 8 Zeichen (z. B. Abkürzungen) empfohlen.

Klassenname, Schnittstellenname

Klassennamen, einschließlich Aufzählungstyp und Anmerkungstyp, sowie Schnittstellennamen bestehen aus Wörtern, in denen der erste Buchstabe jedes Wortes groß geschrieben wird. Mit Ausnahme von Akronymen und gebräuchlichen Abkürzungen wie max und min sollte die Verwendung von Abkürzungen vermieden werden. In Bezug auf das Akronym ist es umstritten, ob es in Großbuchstaben oder nur in Großbuchstaben geschrieben werden soll. Unter dem Gesichtspunkt der Lesbarkeit möchte ich hier jedoch die Methode zur Großschreibung des Großbuchstabens empfehlen.

Methodenname, Feldname

Der Methodenname und der Feldname stimmen im Wesentlichen mit den Regeln für Klassennamen und Schnittstellennamen überein, außer dass das erste Zeichen niedriger gemacht wird. Die einzige Ausnahme von dieser Regel besteht darin, dass in konstanten Feldern Großbuchstaben durch einen Unterstrich getrennt werden sollten. (NEGATIVE_INFINITY)

Lokale Variablen

Die Namenskonventionen für lokale Variablen ähneln denen von Feldvariablen, aber lokale Variablen dürfen kontextbezogene Abkürzungen (i, denom, houseNum usw.) benennen. Argumentvariablen werden in die Methodendokumentation integriert, daher müssen Sie sie sorgfältig benennen.

Geben Sie Parameter ein

Typparameter bestehen grundsätzlich aus einem Zeichen. T ist ein beliebiger Typ, E ist der Elementtyp der Sammlung, K und V sind die Schlüssel- und Werttypen der Karte, X ist der Ausnahmetyp und R ist der Rückgabetyp. Außerdem ist die Reihenfolge bei Verwendung mehrerer beliebiger Typen T, U, V oder T1, T2, T3.

grammatical Die grammatikalischen Regeln für die Benennung sind flexibler und kontroverser als die Notationsregeln.

Paketname, Modulname

Es gibt keine grammatikalischen Namenskonventionen für Pakete.

Klassenname, Schnittstellenname

Klassen, die instanziiert werden können, einschließlich Aufzählungstypen, werden mit singulärer Nomenklatur, Nomenklatur (Thread, PriorityQueue, ChessPiece usw.) benannt. Klassen, die nicht instanziiert sind, werden häufig mit mehreren Nomenklaturformen (Sammler, Sammlungen usw.) benannt. Die Schnittstelle kann dieselbe Namenskonvention wie eine Klasse haben (Sammlung, Komparator usw.) oder mit einem Adjektiv enden (Runnable, Iterable, Accessible usw.). Der Annotationstyp hat verschiedene Verwendungszwecke und gilt daher nicht für die oben genannten. Nomenklatur, Verben, Präfixe und Adjektive werden häufig verwendet (BindingAnnotation, Inject, ImplementedBy, Singleton usw.).

Methodenname

Methoden, die eine Aktion ausführen, werden im Allgemeinen nach Verben, Verbalphrasen (append, drawImage usw.) benannt. Methoden, die Boolesche Werte zurückgeben, werden beginnend mit is oder has benannt, gefolgt von Wörtern, die als Nomenklatur, Nomenklatur oder Adjektive fungieren (z. B. isDigit, isProbablePrime, isEmpty, isEnabled, hasS Geschwisters). Methoden, die andere Werte als Boolesche Werte zurückgeben, und Methoden, die Objektattribute zurückgeben, werden mit Nomenklatur, Nomenklatur und Verbalphrasen benannt, die mit get beginnen. Einige sagen, dass nur Verbalphrasen erlaubt sind, die mit get beginnen, aber die Gründe sind knapp. Es ist normalerweise besser lesbar, Nomenklatur- und Nomenklatur-Benennungsschemata zu verwenden.

if (car.speed() > 2 * SPEED_LIMIT)
    generateAudibleAlert("Watch out for cops!");

Einige Methodenkonventionen erfordern besondere Erwähnung. Die Methode, die den Instanztyp konvertiert und als unabhängiges Objekt zurückgibt, wird manchmal als toType-Methode (toString, toArray usw.) bezeichnet. Eine Methode, die ein Objekt eines anderen Typs als das empfangene Objekt zurückgibt, wird manchmal als asType-Methode bezeichnet (z. B. asList). Eine Methode, die einen primitiven Wert mit demselben Wert wie das aufgerufene Objekt zurückgibt, wird manchmal als typeValue-Methode bezeichnet (z. B. intValue). Zu den gebräuchlichen Namen für Factory-Methoden gehören from, of, valueOf, instance, getInstance, newInstance, getType, newType (Item1).

Feldname, lokale Variable

Die Grammatikregeln für Feldnamen sind weniger wichtig. Dies liegt daran, dass eine gut gestaltete API nur wenige exponierte Felder enthält. Was das boolesche Typfeld betrifft, wird häufig das Feld übernommen, in dem nur die erste Zeichenfolge der Accessor-Methode verschwindet (initialisiert, zusammengesetzt usw.). In anderen Bereichen handelt es sich häufig um ein Substantiv oder eine Nomenklatur (Höhe, Ziffern, bodyStyle). Syntaxregeln für lokale Variablen sind viel lockerer als Felder.

Recommended Posts

Punkt 68: Beachten Sie die allgemein anerkannten Namenskonventionen
Punkt 39: Bevorzugen Sie Anmerkungen gegenüber Namensmustern
Grundlegende Java-Namenskonventionen