Wie soll man Wörter in Paketnamen trennen? Welche der folgenden Aussagen sind richtig?
com.stackoverflow.my_package(unterstreichen)com.stackoverflow.my-package(Bindestriche)com.stackoverflow.MyPackage(CamelCase)
Was ist der allgemeine Standard?
Wie soll man Wörter in Paketnamen trennen? Welche der folgenden Aussagen sind richtig?
com.stackoverflow.my_package (unterstreichen)com.stackoverflow.my-package (Bindestriche)com.stackoverflow.MyPackage (CamelCase)Was ist der allgemeine Standard?
Antworten:
Das offizielle Dokument der Namenskonventionen schreibt Folgendes vor:
Pakete
Das Präfix eines einzigartigen Paketname wird in allen-Klein ASCII - Buchstaben immer geschrieben und sollte einer der Top-Level - Domain - Namen, die derzeit sein
com,edu,gov,mil,net,org, oder einer der englischen zwei Buchstaben bestehenden Codes zu identifizieren Länder nach ISO Standard 3166, 1981.Nachfolgende Komponenten des Paketnamens variieren gemäß den internen Namenskonventionen einer Organisation. Solche Konventionen können festlegen, dass bestimmte Verzeichnisnamenskomponenten Abteilungs-, Abteilungs-, Projekt-, Maschinen- oder Anmeldenamen sind.
Beispiele
com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese
Beachten Sie, dass insbesondere alles, was dem Domänenpräfix der obersten Ebene folgt, im obigen Dokument nicht angegeben ist. Das JLS stimmt dem auch mit den folgenden Beispielen zu:
com.sun.sunsoft.DOEgov.whitehouse.socks.mousefindercom.JavaSoft.jag.Oakorg.npr.pledge.driveruk.ac.city.rugby.game
Der folgende Auszug ist ebenfalls relevant:
In einigen Fällen ist der Internetdomänenname möglicherweise kein gültiger Paketname. Hier sind einige vorgeschlagene Konventionen für den Umgang mit diesen Situationen:
- Wenn der Domainname einen Bindestrich oder ein anderes Sonderzeichen enthält, das in einem Bezeichner nicht zulässig ist, konvertieren Sie ihn in einen Unterstrich.
- Wenn eine der resultierenden Paketnamenkomponenten Schlüsselwörter sind, fügen Sie ihnen einen Unterstrich hinzu.
- Wenn eine der resultierenden Paketnamenskomponenten mit einer Ziffer oder einem anderen Zeichen beginnt, das nicht als Anfangszeichen eines Bezeichners zulässig ist, wird der Komponente ein Unterstrich vorangestellt.
Alle drei sind nicht die Konventionen.
Verwenden Sie com.stackoverflow.mypackage.
Die Paketnamen folgen nicht der Konvention zur Benennung von Kamelhüllen oder Unterstrichen oder Bindestrichen .
Außerdem gibt Google Java Style Guide genau die gleiche (dh com.stackoverflow.mypackage) Konvention an:
5.2.1 Paketnamen
Paketnamen sind alle in Kleinbuchstaben geschrieben, wobei aufeinanderfolgende Wörter einfach miteinander verknüpft sind (keine Unterstriche). Zum Beispiel
com.example.deepspace, nichtcom.example.deepSpaceodercom.example.deep_space.- Google Java Style Guide: 5.2 Regeln nach Bezeichnertyp: 5.2.1 Paketnamen .
Jeder kann den Unterstrich _ verwenden (es ist okay)
Niemand sollte Hypen benutzen - (seine schlechte Praxis)
Niemand sollte Großbuchstaben in Paketnamen verwenden (schlechte Praxis)
HINWEIS: Hier ist "Bad Practice" für technisch gedacht, dass Sie das verwenden dürfen, aber herkömmlicherweise ist es nicht gut zu schreiben.
Die offiziellen Namenskonventionen sind nicht so streng, sie "verbieten" nicht einmal die Notation von Kamelfällen außer dem Präfix ( comin Ihrem Beispiel).
Aber ich persönlich würde Großbuchstaben und Silbentrennungen vermeiden , gerade Zahlen. Ich würde wählen, com.stackoverflow.mypackagewie Bragboy es auch vorgeschlagen hat.
(Silbentrennungen '-' sind in Paketnamen nicht zulässig)
BEARBEITEN
Interessant - die Sprachspezifikation hat auch etwas über Namenskonventionen zu sagen.
In Kapitel 7.7 Eindeutige Paketnamen sehen wir Beispiele mit Paketnamen, die aus Großbuchstaben bestehen (daher wäre die CamelCase-Notation in Ordnung), und sie schlagen vor, die Hyphonierung durch einen Unterstrich ("mary-lou" -> "mary_lou") und das Präfix java zu ersetzen Schlüsselwörter mit einem Unterstrich ("com.example.enum" -> "com.example._enum")
Weitere Beispiele für Großbuchstaben in Paketnamen finden Sie in Kapitel 6.8.1 Paketnamen .
Unterstriche sehen in Paketnamen hässlich aus. Für das, was es wert ist, verwende ich bei Namen, die aus drei oder mehr Wörtern bestehen, Initialen (zum Beispiel :) com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijound dokumentiere dann den Zweck des Pakets in package-info.java.
Die Verkettung von Wörtern im Paketnamen ist etwas, was die meisten Entwickler nicht tun.
Sie können so etwas wie verwenden.
com.stackoverflow.mypackage
Siehe JLS-Namenserklärung
com.stackoverflow.my.package