Что такое Соглашение для разделителя слов в именах пакетов Java?
как следует отделять слова в именах пакетов? Что из нижеследующего верно?
-
com.stackoverflow.my_package
(подчеркивание) -
com.stackoverflow.my-package
(дефис) -
com.stackoverflow.MyPackage
(CamelCase)
что такое общий стандарт?
6 ответов
вот что предписывает официальный документ о соглашениях об именах:
пакетов
префикс уникального имени пакета всегда пишется строчными буквами 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 имена пакетов.
официальные соглашения об именах не настолько строги, они даже не "запрещают" обозначение верблюда, за исключением префикса (com
в вашем примере).
но я лично избегал бы прописных букв и переносов, даже цифры. Я бы выбрал com.stackoverflow.mypackage
как и предложил Брагбой.
(дефисы ' - ' не являются законными в именах пакетов)
редактировать
интересно-спецификация языка имеет что - то скажите также о соглашениях об именах.
на Глава 7.7 Уникальные Имена Пакетов мы видим примеры с именами пакетов, которые состоят из букв верхнего регистра (так что обозначение CamelCase было бы в порядке), и они предлагают заменить дефис подчеркиванием ("mary-lou" -> "mary_lou") и префиксом Java keywords с подчеркиванием ("com.образец.перечисление" -> "ком.образец._enum")
еще несколько примеров букв верхнего регистра в именах пакетов можно найти в главе 6.8.1 Имена Пакетов.
любой может использовать подчеркивание _ (все в порядке)
никто не должен использовать hypen - (его плохая практика)
никто не должен использовать заглавные буквы внутри имен пакетов (плохая практика)
источник: именование пакета (docs.в Oracle)
подчеркивания выглядят уродливо в именах пакетов. Для чего стоит, в случае имен составных из трех и более слов использую инициалы (например:com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
), а затем документировать цель пакета в package-info.Ява.
конкатенация слов в имени пакета-это то, что большинство разработчиков не делают.
вы можете использовать что-то вроде.
com.stackoverflow.mypackage
Refer Объявление имени JLS