Какое соглашение об именах пакетов вы используете для личных / хобби-проектов на Java?

144

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

Итак, как выбрать имена пакетов для личных проектов, которые никогда не будут запущены в производство (вы можете экспериментировать с новым фреймворком в свободное время). Предполагая, что у вас нет личного веб-сайта, домен которого вы можете использовать для создания структуры пакета, что вы делаете (или собираетесь) делать? У вас есть логическая система для генерации новых имен пакетов для хобби-проектов, или вы просто используете простые одноразовые имена пакетов, например mypackage?

Так как мне просто интересно узнать, что думают по этому поводу разные люди, я сделал эту вики-страницу сообщества.

Лично я никогда не задумывался об этом, но я хотел поиграть с Wicket сегодня вечером, и мне пришло в голову, что у меня нет четкого представления о том, как я хочу организовать свои хобби-проекты. Отдельное соглашение об именах пакетов для хобби-проектов (по крайней мере, на мой взгляд) послужило бы хорошим способом четко отделить личный и рабочий код друг от друга.

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

  • Использовать myprojectsкак корневую папку
  • Добавьте название проекта
  • Добавьте любые дополнительные имена подпакетов

Итак, мой проект Wicket будет в пакете, myprojects.learningwicketа модульные тесты будут в пакете myprojects.learningwicket.tests(например).

Майк Спросс
источник
1
Common, получите себе личный домен (firstname-lastname.net) и используйте его в качестве имени пакета. Цель пакета - сделать его уникальным в глобальном масштабе, так что мои проекты его не сокращают.
Владимир Дюжев
5
Использование домена .onion также является вариантом (например onion.duskgytldkxiuqc6.packagename). Пока закрытый ключ остается секретным, вы контролируете доменное имя. Таким образом, регистрация (генерация) бесплатна и постоянна (в отличие от обычных доменов). Он соответствует букве соглашения Java и однозначно идентифицирует вас.
састанин
14
Вы всегда можете создать учетную запись GitHub и использовать io.github.username. *.
Барди Харбороу, 05
2
@BardiHarborow спасибо, я воспользовался вашим предложением.
Николай Волынкин
3
@GabrielBB, GitHub Pages позволяет размещать сайты HTML и Jekyll на yourusername.github.io, и поэтому субдомены github.io более "гарантированно" соответствуют пользователям GitHub, чем субдомены github.com (которые могут использоваться для внутренних Проекты GitHub в любое время).
Барди Харбороу,

Ответы:

49

Если вы просто занимаетесь личными проектами, в которых никто другой не будет использовать код, вы можете придумать имя пакета, которое вам нравится. Не придумывайте что-то, что начинается с com.или net.или другого домена верхнего уровня, потому что это будет означать, что вы владеете доменным именем (т. Е. Использовать в com.johnкачестве имени вашего пакета только потому, что ваше имя - Джон, не очень хорошая идея) .

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

оборота Грег Хьюгилл
источник
1
Итак, если я хочу обратиться к имени пакета, как com.xyzэто имя пакета должно быть где-то зарегистрировано ?? PS xyzэто мой клиент.
прасад
9
Интересно, могу ли я использовать свой идентификатор github для этого и домена github? Например com.github.mygithubid.myproject?
Кирилл Г.
2
@KirillG. Я бы не рекомендовал это делать, поскольку идентификаторы GitHub можно менять в любое время и любое количество раз. Конечно, любой домен может меняться, но не так легко и часто (по крайней мере, обычно). Хотя, думаю, для хобби-проектов это нормально.
Сара
26

Я просто использую свои инициалы: fg.nameofproject.etc

Это уменьшает набор текста. В любой момент к нему можно добавить префикс sf.net или com. или орг. или com.google ..

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

Флорин
источник
42
bond.james.007
Click Upvote
19
@click в соответствии с руководящими принципами, которые были бы bond.james._007- не имеют такого же звонка ...: - {
corsiKa
20
pmurray_at_bigpond_dot_com.project.package
Полмуррей
источник
2
+1. Умная. Это дает вам уникальное имя пакета и сразу идентифицирует автора.
Майк Спросс,
19

<sarcasm>Ба. У любого уважающего себя программиста будет собственное доменное имя. Это явно вопрос с подвохом. У каждого свое личное доменное имя! </sarcasm>:-)

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

Джеймс Шек
источник
18
Как ни странно, это также повысит вашу уверенность в себе.
jamesh
26
Хороший ответ, но начинающий программист, вероятно, не захочет покупать веб-сайт только для того, чтобы следить за учебным веб-сайтом или видео о том, как создать графический интерфейс с кнопкой закрытия.
Jochem Kuijpers
17

Я храню большинство моих хобби проектов в Google Code, так что я просто использовать сайт проекта в качестве имени пакета: com.googlecode.donkirkby.someproject.

Дон Киркби
источник
8
Насколько мы могли быть слепы, чтобы не видеть глупости своих действий ?!
Джои Саби
1
Вы скучаете по Google Code, @Joey? Последние несколько лет я в основном использовал GitHub , поэтому мне просто пришлось перенести несколько моих старых проектов из Google Code, прежде чем они закрылись.
Дон Киркби
Итак, вы переименовали пакеты, сохранили имена googlecode или ...?
serv-inc
1
Я не использовал старый код с тех пор, как переместил его, @ serv-inc. Любой вариант подойдет.
Дон Киркби
3

меня зовут анжан

обычно я использую com.anjan

У меня есть своя фантастическая компания - иногда я использую ее

Традиция с sourceforge (как показали hibernate и другие пакеты) - net.sf. *

так что, в зависимости от вашего настроения, вы можете пойти с этим.

Анжанб
источник
13
Если только вы не владеете anjan.com, я думаю, что вы ужасно ошибаетесь, делая это.
Фредрик
7
@Fredrick: к счастью, похоже, что anjan.com не собирается в ближайшее время выпускать какие-либо библиотеки.
corsiKa
1
@corsiKa: ты прав, пока я ничего не выпускаю, я в порядке. :-)
anjanb
3
@anjanb Ну, я зашел на их сайт. Они делают корм для домашних животных. Я не эксперт, но большинство производителей кормов для домашних животных не выпускают много программных библиотек =)
corsiKa
3

Я думаю, у вас это получилось. Здесь соблазн избежать - вообще не беспокоиться о названии пакета. Легко сэкономить несколько нажатий клавиш, потому что «Я просто пишу тестовый код». Но затем код становится хорошим, полезным и большим, и тогда вы понимаете, что имеете твердый старт для того, что может быть долгоживущей библиотекой или приложением. Возможно, это не библиотека или приложение, которое когда-либо покидает вашу домашнюю сеть, но дело в том, что вы не думали о будущем. Это датский призрак информатики - всегда думайте наперед, хотя бы немного.

Соглашение об именах, которое я использую для своего хобби-кода, очень похоже на ваше. У меня есть каталог верхнего уровня с именем «futura» (длинные, скучные причины появления этого имени), от которого зависает весь мой код. Я пытаюсь организовать свой код в библиотеки пакетов, даже если это может быть класс или пакет, который я никогда не использую для другого проекта. Я помещаю все приложения (то есть все, что имеет void main (String [] args) в классе) в папку futura.app. *. Я также пытаюсь имитировать стандартные имена пакетов библиотеки Java для своего собственного кода, хотя в нескольких случаях я нарушил соглашение из-за моих собственных вкусов (например, futura.inet для Интернета, а не просто сокет, код и futura.collections для не -util stuff.) Перефразируя Дэвида Мэмета: всегда делайте обобщения. Всегда будьте универсальны!

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

Джим Нельсон
источник
2

Я использую свой URL-адрес OpenID, а затем добавляю имя своего проекта. например, com.myopenid.cd1.twitterэто корневой пакет клиента Twitter, который я разрабатываю.

cd1
источник
Мне это понравилось, но потом я понял, что этого больше нет. :( janrain.com/myopenid-service-ends «С 1 февраля 2014 г. услуга MyOpenID отключена.»
successhawk
2

Мое именование: prj.project_name.

Амир Саниян
источник
1

Я просто использую свое имя: surname.initials.xxx, как отличное сочетание краткости и предотвращения столкновений. Я полагал, что это даст разумное свободное от конфликтов пространство имен, если я когда-нибудь решу публично опубликовать код. У меня также есть небольшая программа, которую я написал, которая может переупаковывать целые деревья каталогов, поэтому я решил, что если мне когда-нибудь понадобится переупаковка для публикации, это будет довольно безболезненно ... поэтому я не слишком много проспал из-за этого.

После surname.initials.xxx я использую либо app для пакетов приложений, lib для пакетов библиотек, либо tst для вещей, с которыми я просто экспериментирую.

Лоуренс Дол
источник
1

что вы думаете о lastname.firstname.project ??? как luz.marlon.project?

Марлон
источник
16
Это может сработать для вас, но Джон Смит и Боб Джонс могут столкнуться с конфликтами, когда когда-нибудь захотят выпустить свой код.
Bill the Lizard
0

Я думал задать тот же вопрос. До сих пор я использовал префикс com.tehvan, хотя на самом деле у меня нет компании.

Техван
источник