Як слід мати окремі слова в назвах пакетів? Що з наведеного нижче є правильним?
com.stackoverflow.my_package
(підкреслення)com.stackoverflow.my-package
(дефіси)com.stackoverflow.MyPackage
(CamelCase)
Що таке загальний стандарт?
Як слід мати окремі слова в назвах пакетів? Що з наведеного нижче є правильним?
com.stackoverflow.my_package
(підкреслення)com.stackoverflow.my-package
(дефіси)com.stackoverflow.MyPackage
(CamelCase)Що таке загальний стандарт?
Відповіді:
Ось що прописано в офіційному документі про конвенції про іменування:
Пакети
Приставка унікального імені пакета завжди пишеться в усіх великих буквах ASCII букв і повинна бути одним з імен доменів верхнього рівня, в даний час
com
,edu
,gov
,mil
,net
,org
, або один з англійських двох літерних кодів , що ідентифікують країни як визначено в ISO Стандарт 3166, 1981.Подальші компоненти назви пакета змінюються залежно від власних внутрішніх правил організації імен. Такі умовні умови можуть визначати, що певні компоненти імен каталогів - це імена підрозділів, відділів, проектів, машин або входу.
Приклади
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Зауважте, що, зокрема, усе, що відповідає префіксу домену верхнього рівня, не визначено вищевказаним документом. JLS також погоджується з цим, наводячи такі приклади:
com.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
Наступний уривок також є актуальним:
У деяких випадках ім'я домену в Інтернеті може бути неправдивим пакетом. Ось кілька запропонованих конвенцій для вирішення цих ситуацій:
- Якщо доменне ім’я містить дефіс або будь-який інший спеціальний символ, який не дозволений в ідентифікаторі, перетворіть його у підкреслення.
- Якщо будь-який із отриманих компонентів імені пакета є ключовими словами, додайте до них підкреслення.
- Якщо будь-який із отриманих компонентів імені пакета починається з цифри або будь-якого іншого символу, який не дозволений як початковий символ ідентифікатора, має підкреслення з префіксом для компонента.
Усі три не є умовами.
Використовуйте com.stackoverflow.mypackage
.
Назви упаковки не відповідають принципу верблюда або підкреслюють або дефіси пакету дефісів .
Також у посібнику стилів Google Java визначено точно таку ж (тобто com.stackoverflow.mypackage
) умову:
5.2.1 Назви упаковок
Назви пакунків - це малі регістри, а послідовні слова просто з'єднані разом (без підкреслення). Наприклад
com.example.deepspace
, ніcom.example.deepSpace
абоcom.example.deep_space
.- Посібник зі стилю Google Java: 5.2 Правила за типом ідентифікатора: 5.2.1 Назви пакетів .
Будь-хто може використовувати підкреслення _ (його добре)
Ніхто не повинен використовувати hypen - (його погана практика)
Ніхто не повинен використовувати великі літери всередині імен пакунків (Погана практика)
ПРИМІТКА. Тут "Погана практика" призначена для технічного використання, яке вам дозволяється використовувати, але звичайно це не дуже вдало.
Джерело: Іменування пакету (docs.oracle)
Офіційні угоди про іменування не такі строгі, вони навіть не «забороняють» позначення справи верблюда, крім префікса ( com
у вашому прикладі).
Але я особисто уникав великих букв і дефісів , парних цифр. Я б вибрав так, com.stackoverflow.mypackage
як запропонував і Брейбой.
(дефіси "-" не є законними у назвах пакетів)
EDIT
Цікаво - мовна специфікація має щось сказати і про конвенції про іменування.
У Розділі 7.7 Унікальні імена пакунків ми бачимо приклади з іменами пакунків, які складаються з великих літер (таким чином, позначення CamelCase було б нормальним), і вони пропонують замінити гіфонацію підкресленням ("mary-lou" -> "mary_lou") і префіксом java ключові слова з підкресленням ("com.example.enum" -> "com.example._enum")
Ще кілька прикладів великих літер у назвах пакетів можна знайти у главі 6.8.1 Імена пакунків .
Підкреслення виглядають некрасиво у назвах пакетів. Що для того, що варто, у випадку імен, що складаються з трьох і більше слів, я використовую ініціали (наприклад com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
:), а потім документую мету пакета в package-info.java
.
З’єднання слів у назві пакета - це те, що більшість розробників не робить.
Можна використовувати щось подібне.
com.stackoverflow.mypackage
Зверніться до Декларації імені JLS
com.stackoverflow.my.package