Каково соглашение для разделителя слов в именах пакетов Java? - PullRequest
311 голосов
/ 05 июля 2010

Как следует разделять слова в именах пакетов?Какие из следующих параметров верны?

  1. com.stackoverflow.my_package (подчеркивание)
  2. com.stackoverflow.my-package (дефис)
  3. com.stackoverflow.MyPackage (CamelCase)

Что такое общий стандарт?

Ответы [ 6 ]

222 голосов
/ 05 июля 2010

Вот что предписывает официальный документ по соглашениям об именах:

Пакеты

Префикс уникального имени пакета всегда пишется строчными буквами ASCII и должен быть одним из доменных имен верхнего уровня, в настоящее время com, edu, gov, mil, net, org или один из двухбуквенных кодов на английском языке, идентифицирующих страны в соответствии со стандартом ISO 3166, 1981.

Последующие компоненты имени пакета различаются в соответствии с собственными внутренними соглашениями об именах организации. В таких соглашениях может быть указано, что определенными компонентами имен каталогов являются имена подразделений, отделов, проектов, компьютеров или имен входа.

Примеры * * 1016 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

Следующая выдержка также имеет отношение:

В некоторых случаях имя интернет-домена может быть неправильным именем пакета. Вот некоторые предлагаемые соглашения для решения этих ситуаций:

  • Если имя домена содержит дефис или любой другой специальный символ, не разрешенный в идентификаторе, преобразуйте его в подчеркивание.
  • Если какой-либо из компонентов имени пакета в результате является ключевым словом, добавьте к ним подчеркивание.
  • Если любой из результирующих компонентов имени пакета начинается с цифры или любого другого символа, который не допускается в качестве начального символа идентификатора, перед компонентом ставится префикс подчеркивания.

Ссылки

217 голосов
/ 05 июля 2010

Все три не являются соглашениями.

Использование 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 Имена пакетов .

16 голосов
/ 05 июля 2010

Официальные соглашения об именах не так уж строги, они даже не запрещают нотацию верблюда, за исключением префикса (com в вашем примере).

Но я бы лично избегал прописных букв и переносы , четные числа.Я бы выбрал com.stackoverflow.mypackage, как предложил Брэгбой.

(переносы '-' недопустимы в именах пакетов)

РЕДАКТИРОВАТЬ

Интересно- в спецификации языка тоже есть, что сказать по поводу соглашений об именах.

В Глава 7.7 ​​Уникальные имена пакетов мы видим примеры с именами пакетов, которые состоят из заглавных букв (так что нотация CamelCase будет в порядке) и они предлагают заменить перенос слов подчеркиванием ("mary-lou" -> "mary_lou") и префиксом ключевых слов java с подчеркиванием ("com.example.enum" -> "com.example._enum")

Еще несколько примеров букв верхнего регистра в именах пакетов можно найти в главе 6.8.1 Имена пакетов .

10 голосов
/ 29 ноября 2016

Любой может использовать подчеркивание _ (это нормально)

Никто не должен использовать hypen - (это Плохая практика)

Никто не должениспользуйте заглавные буквы в именах пакетов (Плохая практика)

здесь «Плохая практика» предназначена для того, чтобы технически вам разрешалось использовать это, но условно писать это нехорошо.

Источник: Именование пакета (docs.oracle)

1 голос
/ 20 июня 2017

Объединение слов в имени пакета - это то, что большинство разработчиков не делают.

Вы можете использовать что-то вроде.

com.stackoverflow.mypackage

См. Декларация имени JLS

1 голос
/ 07 февраля 2017

Подчеркивания выглядят некрасиво в именах пакетов.Для чего стоит, в случае составления имен из трех или более слов я использую инициалы (например: com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo), а затем документирую назначение пакета в package-info.java.

...