Что такое соглашение для разделителя слов в именах пакетов Java?
Как следует разделять слова в именах пакетов? Что из следующего верно?
-
com.stackoverflow.my_package
(подчеркивание) -
com.stackoverflow.my-package
(дефис) -
com.stackoverflow.MyPackage
(CamelCase)
Каков общий стандарт?
- исключение в ошибке инициализации
- Передача пакета на startActivity ()?
- Jar для Mac OSX App Bundle с приложением
- Android VpnService для захвата пакетов не будет захватывать пакеты
- Переопределить функцию, импортированную в пространстве имен
- Создайте функцию Oracle, которая возвращает таблицу
- Каким должно быть имя пакета приложения для Android?
- Пакет Java не содержит ошибки
- В чем разница между --save и -save-dev?
- Когда сетевой пакет TCP будет fragmentирован на уровне приложения?
- Как установить частный модуль NPM без моего собственного реестра?
- Проблемы с установкой пакета devtools
- Узел узла (Grunt) установлен, но недоступен
Вот что предписывает документ официальных соглашений об именах:
пакеты
Префикс имени уникального пакета всегда записывается буквами ASCII со строчными буквами и должен быть одним из доменных имен верхнего уровня, в настоящее время
com
,edu
,gov
,mil
,net
,org
или одного из двухбуквенных кодов английского языка определяя страны, указанные в стандарте ИСО 3166, 1981.Последующие компоненты имени пакета различаются в соответствии с собственными внутренними соглашениями об именах организации. Такие соглашения могут указывать, что некоторые компоненты имени каталога являются делениями, департаментами, проектами, машинами или именами входа.
Примеры
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Рекомендации
- java.sun.com – Условные обозначения / Именование
Обратите внимание, что, в частности, все, что следует за префиксом домена верхнего уровня, не указан указанным выше документом. JLS также соглашается с этим, указав следующие примеры:
com.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
Также актуальна следующая выдержка:
В некоторых случаях имя домена в Интернете не может быть допустимым именем пакета. Вот некоторые предлагаемые соглашения для решения этих ситуаций:
- Если имя домена содержит дефис или любой другой специальный символ, не разрешенный в идентификаторе, преобразуйте его в символ подчеркивания.
- Если какой-либо из результирующих компонентов имени пакета является ключевым словом, добавьте в них подчеркивание.
- Если какой-либо из полученных компонентов имени пакета начинается с цифры или любого другого символа, который не разрешен в качестве начального символа идентификатора, имеет знак подчеркивания, префиксный для компонента.
Рекомендации
- JLS 6.8.1 Имена пакетов
- JLS 7.7 Уникальные имена пакетов
Все три не являются условностями.
Используйте com.stackoverflow.mypackage
.
Имена пакетов не соответствуют правилам именования верблюдов или символов подчеркивания или дефисов.
Кроме того, в руководстве по стилю Java 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 ключевые слова с подчеркиванием («com.example.enum» -> «com.example._enum»)
Несколько примеров для строчных букв в именах пакетов можно найти в главе 6.8.1 Имена пакетов .
Любой может использовать символ подчеркивания _ (его ОК)
Никто не должен использовать hypen – (его плохая практика)
Никто не должен использовать буквы капиталов внутри имен пакетов (плохая практика)
Источник: Именование пакета (docs.oracle)
Подчеркивания выглядят уродливыми в именах пакетов. Для того, что стоит, в случае имен, com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
из трех или более слов, я использую инициалы (например: com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
), а затем документирует пакет цели в package-info.java.
Конкатенация слов в имени пакета – это то, что большинство разработчиков не делает.
Вы можете использовать что-то вроде этого.
com.stackoverflow.mypackage
Обратитесь к декларации имени JLS
Я бы предпочел использовать отдельные слова и подпакеты, поэтому вместо того, чтобы говорить com.stackoverflow.my-package, я бы сделал его com.stackoverflow.my.package
Это открывает возможность добавления подпакетов в будущем, связанных с вашим родительским пакетом. Ссылка: http://programmergate.com/coding-conventions/