Как следует разделять слова в именах пакетов? Какие из следующих являются правильными?
com.stackoverflow.my_package
(подчеркивать)com.stackoverflow.my-package
(Дефис)com.stackoverflow.MyPackage
(CamelCase)
Каков общий стандарт?
Как следует разделять слова в именах пакетов? Какие из следующих являются правильными?
com.stackoverflow.my_package
(подчеркивать)com.stackoverflow.my-package
(Дефис)com.stackoverflow.MyPackage
(CamelCase)Каков общий стандарт?
com.stackoverflow.my.package
Ответы:
Вот что предписывает официальный документ по соглашениям об именах:
Ссылки
Обратите внимание, что, в частности, все, что следует за префиксом домена верхнего уровня, не указано в приведенном выше документе. JLS также соглашается с этим, приводя следующие примеры:
Следующая выдержка также актуальна:
Ссылки
источник
Все три не являются соглашениями.
Использование
com.stackoverflow.mypackage
.Имена пакетов не следуют верблюда корпуса или подчеркивания или дефисы пакетов соглашение об именах .
Кроме того, в Google Java Style Guide указано точно такое же (т.е.
com.stackoverflow.mypackage
) соглашение:источник
Любой может использовать подчеркивание _ (все в порядке)
Никто не должен использовать hypen - (это плохая практика)
Никто не должен использовать заглавные буквы внутри имен пакетов (плохая практика)
ПРИМЕЧАНИЕ. Здесь «Плохая практика» предназначена для того, чтобы технически вам разрешалось это использовать, но условно писать ее нехорошо.
Источник: Наименование пакета (docs.oracle)
источник
Официальные соглашения об именах не так уж строги, они даже не запрещают нотацию верблюда, за исключением префикса (
com
в вашем примере).Но я бы лично избегал прописных букв
и переносов, даже цифр. Я бы выбрал,com.stackoverflow.mypackage
как предложил Брэгбой.(переносы '-' недопустимы в именах пакетов)
РЕДАКТИРОВАТЬ
Интересно - спецификация языка тоже может сказать о соглашениях по именованию.
В главе 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
источник