Warum sollte der Java-Paketname in Kleinbuchstaben geschrieben werden?

Lesezeit: 4 Minuten

Benutzer-Avatar
Oleksii Kolotylenko

Eigentlich ist das eine rein theoretische Frage. Aber es ist interessant, warum die Java-Spezifikation keine Großbuchstaben im Paket zulässt und so etwas schreibt:

com.mycompany.projname.core.remotefilesystemsynchronization.*

Anstatt von

com.myCompanyName.projName.core.remoteFileSystemSynchronization.*

  • mögliches Duplikat von Was ist die Konvention für Worttrennzeichen in Java-Paketnamen?

    – Martin Schröder

    4. August 2015 um 14:58 Uhr

  • Nein, dies ist kein Duplikat davon, da ich mich in diesem Artikel für den Grund solcher Konventionen interessiere.

    – Oleksii Kolotylenko

    2. Januar 2016 um 12:42 Uhr

Benutzer-Avatar
gtgaxiola

Direkt von Oracle-Dokumente

Paketnamen werden in Kleinbuchstaben geschrieben, um Konflikte mit den Namen von Klassen oder Schnittstellen zu vermeiden.

  • Paketnamen werden auch in Verbindung mit Dateisystemverzeichnissen verwendet, die oft selbst Einschränkungen hinsichtlich der Groß- und Kleinschreibung haben.

    – Werden

    21. September 2012 um 16:25 Uhr

  • Wer nutzt ein Dateisystem ohne Großbuchstabenunterstützung? Sie haben entweder ext3, NTFS oder das Mac-Ding, wir sind nicht mehr in den Neunzigern

    – Mike76

    1. September 2016 um 21:18 Uhr


  • “um Konflikte mit Klassennamen zu vermeiden” -> Sie können com.site.myName nicht mit dem Klassennamen verwechseln, da es im Falle einer Klasse com.site.MyName wäre (beginnend mit einem Großbuchstaben). Es gibt also keine Logik zugunsten des „myname“-Ansatzes. Ich denke, “myName” ist besser, weil es einfacher zu lesen ist. B. “com.marvel.movies.gardiansofthegalaxy”

    – joro

    23. August 2017 um 8:38 Uhr

  • ja, theoretisch. Aber nicht praktisch. Eigentlich schade, dass es nur eine Konvention ist. Ich bin hierher gekommen, weil ich den Code meines Kollegen ändern muss und er einen Paketnamen im Formular verwendet company.AppName.something.else. Sobald Sie Großbuchstaben zulassen, werden sie von jemandem falsch verwendet. Wollte ich jetzt eine Klasse hinzufügen company.AppName, müsste ich das ganze Paket umbenennen – was ich früher oder später wahrscheinlich sowieso tun werde. 😉 Übrigens, ist remoteFileSystemSynchronization nicht sowieso ein bisschen zu lang für einen Paketnamen?

    – Morgen

    11. Juli 2018 um 9:02 Uhr


  • In Ihrem Fall ist AppName nicht LowerCamelCase, wie @joro anzeigt (in Ihrem Fall würde ich wahrscheinlich die Person erwürgen, die den AppName erstellt hat, genauso wie ich jemanden in unserer Firma erwürgen wollte, der Klassen erstellt hat, die in Kleinbuchstaben beginnen …) . Ich gehöre zu den Entwicklern, die denken, dass com.pany.app.tableOfContents einfacher zu lesen ist als com.pany.app.tableofcontents (oder com.pany.app.toc). Und das Inhaltsverzeichnis.der.Firmenapp.ist noch schlimmer…

    – Nedorot

    17. August 2018 um 15:34 Uhr

Aber es ist interessant, warum die Java-Spezifikation keine Großbuchstaben im Paket zulässt und so etwas schreibt:

Die Spezifikation erlaubt es ist einfach gut. Es ist nur ein Konvention um nur Kleinbuchstaben zu verwenden.

Wie gtgaxiola sagt, vermeidet dies Konflikte mit Typnamen … in .NET-Namenskonventionen this tut passieren, was zu Ratschlägen führt, die Sie Benennen Sie eine Klasse nicht nach ihrem Namensraum. Natürlich würde die Verwendung von camelCase-Paketen die Kollision vollständig vermeiden.

Ich vermute, dass die Realität bei der Erstellung der Namenskonventionen für Pakete nicht gründlich berücksichtigt wurde. Persönlich finde ich es selten ein Problem – wenn ich am Ende ein Paket mit einem Element von “remotefilesystemsynchronization” sehe, dann ist die Großschreibung nicht das Wichtigste, worüber ich mir Sorgen machen würde 🙂

  • Stimmt @Jon! Gleiches gilt für Klassennamen, die mit Großbuchstaben beginnen

    – gtgaxiola

    21. September 2012 um 16:23 Uhr

  • Also im Grunde hat ein Paketunterteilname, der mit Kleinbuchstaben und weiteren Wörtern in Großbuchstaben (wie Methoden) beginnt, keine Chance, mit Klassen zu kollidieren, solange sie alle in Großbuchstaben beginnen, richtig? :), aber am wichtigsten wäre, dass dies die einzige problematische Kollision im Zusammenhang damit wäre, da ich keinen Namen eines Paketunterteils sehen kann, der mit einem Methodennamen kollidiert …

    – Wassermannkraft

    15. November 2016 um 18:27 Uhr

  • Die Tagung wurde verlegt nach: docs.microsoft.com/en-us/dotnet/standard/design-guidelines/…

    – Flintix

    9. Juni um 10:35 Uhr

Benutzer-Avatar
nanosoft

Es ist nur eine andere Konvention – Man könnte sich fragen, warum der Klassenname immer mit Großbuchstaben beginnen muss oder der Methodenname mit Kleinbuchstaben und dann mit Kamelbuchstaben beginnt. Java nicht zwingt Sie, auf diese Weise zu verwenden. Es ist nur so, dass eine Reihe von unterstrichenen Regeln einer großen Gemeinschaft von Java-Entwicklern hilft, leicht verständlichen Code für die Mehrheit zu schreiben, die sich an Konventionen hält.

Ein eindeutiger Grund ist als solcher nicht zuzuordnen. Es ist genau das, was sich angefühlt hat gut und war bis dahin in der Praxis mehrheitlich Programmierer, als er die Konvention schrieb. Aber ja, Richtlinien wären definitiv da, bevor Konventionen geschrieben werden. Ich meine nicht, dass es ein skurriles Werk ist. Richtlinien werden erstellt, damit wir allein durch das Betrachten der verschiedenen Elemente erkennen können, ob es sich um eine Klasse, eine Methode oder ein Paket handelt – und durch die folgenden Konventionen wurde dies schon so lange erreicht.

1019190cookie-checkWarum sollte der Java-Paketname in Kleinbuchstaben geschrieben werden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy