Jak należy rozdzielić słowa w nazwach pakietów? Które z poniższych są poprawne?
com.stackoverflow.my_package(podkreślać)com.stackoverflow.my-package(Myślniki)com.stackoverflow.MyPackage(CamelCase)
Jaki jest ogólny standard?
Jak należy rozdzielić słowa w nazwach pakietów? Które z poniższych są poprawne?
com.stackoverflow.my_package (podkreślać)com.stackoverflow.my-package (Myślniki)com.stackoverflow.MyPackage (CamelCase)Jaki jest ogólny standard?
Odpowiedzi:
Oto, co nakazuje oficjalny dokument konwencji nazewnictwa:
Pakiety
Przedrostek unikalnej nazwy pakietu jest zawsze napisane we wszystkich, małych liter ASCII i powinien być jedną z nazw domen najwyższego poziomu, obecnie
com,edu,gov,mil,net,org, lub w jednym z angielskich kodów dwuliterowych kraje identyfikacyjnych zgodnie z ISO Standard 3166, 1981.Kolejne składniki nazwy pakietu różnią się zgodnie z wewnętrznymi konwencjami nazewnictwa organizacji. Takie konwencje mogą określać, że niektóre komponenty nazw katalogów to nazwy działów, działów, projektów, maszyn lub loginów.
Przykłady
com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese
Zwróć uwagę, że w szczególności wszystko, co następuje po prefiksie domeny najwyższego poziomu, nie jest określone w powyższym dokumencie. JLS zgadza się z tym, podając następujące przykłady:
com.sun.sunsoft.DOEgov.whitehouse.socks.mousefindercom.JavaSoft.jag.Oakorg.npr.pledge.driveruk.ac.city.rugby.game
Istotny jest również następujący fragment:
W niektórych przypadkach nazwa domeny internetowej może nie być prawidłową nazwą pakietu. Oto kilka sugerowanych konwencji postępowania w takich sytuacjach:
- Jeśli nazwa domeny zawiera łącznik lub inny znak specjalny niedozwolony w identyfikatorze, przekonwertuj go na znak podkreślenia.
- Jeśli którykolwiek z wynikowych składników nazwy pakietu jest słowem kluczowym, dodaj do nich znak podkreślenia.
- Jeśli którykolwiek z wynikowych składników nazwy pakietu zaczyna się cyfrą lub innym znakiem, który nie jest dozwolony jako początkowy znak identyfikatora, należy poprzedzić znakiem podkreślenie.
Wszystkie trzy nie są konwencjami.
Zastosowanie com.stackoverflow.mypackage.
Nazwy pakietów nie są zgodne z konwencją nazewnictwa wielbłądów, podkreśleniami lub łącznikami .
Ponadto Przewodnik po stylu Google Java określa dokładnie tę samą (tj. com.stackoverflow.mypackage) Konwencję:
5.2.1 Nazwy pakietów
Nazwy pakietów są pisane małymi literami, a kolejne słowa są po prostu łączone razem (bez podkreślników). Na przykład
com.example.deepspace, niecom.example.deepSpacebądźcom.example.deep_space.- Przewodnik po stylu Java firmy Google: 5.2 Reguły według typu identyfikatora: 5.2.1 Nazwy pakietów .
Każdy może używać podkreślenia _ (jego OK)
Nikt nie powinien używać hypen - (jego zła praktyka)
Nikt nie powinien używać wielkich liter w nazwach paczek (zła praktyka)
UWAGA: Tutaj „Zła praktyka” jest przeznaczona dla tego, że technicznie możesz to wykorzystać, ale konwencjonalnie nie jest to dobre maniery do pisania.
Źródło: Nazywanie pakietu (docs.oracle)
Oficjalne konwencje nazewnictwa nie są aż tak rygorystyczne, nawet nie zabraniają notacji na wielbłądach z wyjątkiem prefiksu (com w twoim przykładzie).
Ale osobiście unikałbym wielkich liter i łączników , a nawet liczb. Wybrałbymcom.stackoverflow.mypackage jak Bragboy zasugerował też.
(dzielenia wyrazów „-” nie są dozwolone w nazwach pakietów)
EDYTOWAĆ
Ciekawe - specyfikacja języka ma również coś do powiedzenia na temat konwencji nazewnictwa.
W rozdziale 7.7 Unikalne nazwy pakietów widzimy przykłady z nazwami pakietów składającymi się z wielkich liter (więc notacja CamelCase byłaby OK) i sugerują zastąpienie hiphonacji znakiem podkreślenia („mary-lou” -> „mary_lou”) i prefiksem java słowa kluczowe z podkreśleniem („com.example.enum” -> „com.example._enum”)
Więcej przykładów wielkich liter w nazwach pakietów można znaleźć w rozdziale 6.8.1 Nazwy pakietów .
Podkreślenia wyglądają brzydko w nazwach pakietów. Co jest warte, w przypadku nazw złożonych z trzech lub więcej słów używam inicjałów (na przykład:), com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijoa następnie dokumentuję cel pakietu package-info.java.
Łączenie słów w nazwie pakietu jest czymś, czego większość programistów nie robi.
Możesz użyć czegoś takiego.
com.stackoverflow.mypackage
Zobacz deklarację nazwy JLS
com.stackoverflow.my.package