Qual convenção de nomenclatura de pacotes você usa para projetos pessoais / de hobby em Java?

143

Eu já estou familiarizado com a convenção de nomenclatura padrão de pacotes Java de usar um nome de domínio para criar um nome de pacote exclusivo (ou seja, pacote com.stackoverflow.widgets). No entanto, nunca vi recomendações sobre como escolher nomes de pacotes para projetos pessoais. Suponho, porque é porque é realmente uma questão de gosto pessoal.

Então, como você escolhe os nomes dos pacotes para projetos pessoais que nunca entrarão em produção (você pode experimentar uma nova estrutura no seu tempo livre). Supondo que você não tenha um site pessoal cujo domínio possa ser usado para criar sua estrutura de pacotes, o que você faria (ou faria)? Você tem um sistema lógico para gerar novos nomes de pacotes para projetos de hobby ou usa apenas nomes simples de pacotes descartáveis ​​como mypackage?

Como estou curioso para ver o que as pessoas pensam sobre isso, fiz deste um wiki da comunidade.

Para mim, pessoalmente, nunca pensei muito nisso, mas queria brincar com o Wicket hoje à noite e me ocorreu que não tenho uma ideia clara de como quero organizar meus projetos de hobby. Uma convenção de nomenclatura de pacotes distinta e separada para projetos de hobby (pelo menos na minha opinião) serviria como uma boa maneira de manter o código pessoal e relacionado ao trabalho claramente separado um do outro.

Eu estava pensando em uma simples convenção hierárquica de nomes, para manter a fonte dos meus projetos pessoais em uma única pasta raiz:

  • Use myprojectscomo pasta raiz
  • Anexar o nome do projeto
  • Adicione nomes de subpacotes adicionais

Portanto, meu projeto Wicket estaria no pacote myprojects.learningwickete os testes de unidade no pacote myprojects.learningwicket.tests(por exemplo).

Mike Spross
fonte
1
Comum, consiga um domínio pessoal (firstname-lastname.net) e use-o como um nome de pacote. O objetivo do pacote é ser globalmente único, para que meus projetos não sejam realmente suficientes.
Vladimir Dyuzhev 15/11/2008
5
Usar um domínio .onion também é uma opção (como onion.duskgytldkxiuqc6.packagename). Enquanto a chave privada permanecer em segredo, você estará no controle do nome de domínio. Portanto, é gratuito registrar-se (gerar) e é permanente (ao contrário dos domínios convencionais). Está em conformidade com a convenção da carta de Java e o identifica exclusivamente.
Sastanin
14
Você sempre pode criar uma conta do GitHub e usar io.github.username. *.
Bardi Harborow
2
@BardiHarborow obrigado, usei sua sugestão.
Nick Volynkin
3
O @GabrielBB, GitHub Pages permite que você hospede sites HTML e Jekyll em yourusername.github.io, e, portanto, os subdomínios do github.io têm mais "garantia" de corresponder aos usuários do GitHub do que os subdomínios do github.com (que podem ser usados ​​para fins internos) Projetos do GitHub a qualquer momento).
Bardi Harborow

Respostas:

49

Se você está apenas fazendo projetos pessoais em que ninguém mais usará o código, poderá criar um nome de pacote que desejar. Não invente algo que comece com com.ou net.outro domínio de nível superior, porque isso implicaria que você possui o nome de domínio (por com.johnexemplo, usar como nome do pacote apenas porque seu nome é John não é uma boa ideia) .

Se você for dar o código a mais alguém, use um nome de pacote globalmente exclusivo, o que, de acordo com as convenções Java, significa que você deve registrar e usar um nome de domínio.

Greg Hewgill
fonte
1
Então, se eu quiser endereçar o nome do pacote, como com.xyzesse nome deve ser registrado em algum lugar? PS xyzé meu cliente.
Prasad
9
Gostaria de saber se posso usar meu ID do github para esse domínio e github? Por exemplo com.github.mygithubid.myproject?
precisa
2
@KirillG. Eu recomendaria isso, pois os IDs do GitHub podem ser alterados a qualquer momento, várias vezes. Concedido, qualquer domínio pode mudar, mas não com tanta facilidade ou frequência (normalmente não de qualquer maneira). Embora eu acho que não há problema em projetos de hobby.
sara
26

Eu apenas uso minhas iniciais: fg.nameofproject.etc

Reduz a digitação. Pode ser prefixado a qualquer momento com sf.net ou com. ou org. ou com.google ..

Como o projeto é pessoal, trate-o de maneira especial, assim como a sua camisa personalizada recém-pressionada - ele será bom.

Florim
fonte
42
bond.james.007
Click Upvote
19
@clique de acordo com as diretrizes que seriam bond.james._007- não têm o mesmo toque ...: - {
corsiKa
20
pmurray_at_bigpond_dot_com.project.package
paulmurray
fonte
2
+1. Inteligente. Isso fornece um nome de pacote exclusivo e identifica o autor de uma só vez.
Mike Spross #:
19

<sarcasm>Bah. Qualquer programador que se preze teria seu próprio nome de domínio. Esta é claramente uma questão complicada. Todo mundo tem seu próprio nome de domínio pessoal! </sarcasm>:-)

Ok, com toda a seriedade, a compra de um nome de domínio personalizado é provavelmente a opção mais fácil. Por cerca de US $ 10 por ano, você pode encontrar fornecedores confiáveis ​​para hospedar o domínio e encaminhar emails.

James Schek
fonte
18
Estranhamente, isso também aumentará sua autoconfiança.
jamesh
26
Boa resposta, mas um programador iniciante provavelmente não deseja comprar um site apenas para seguir algum site tutorial ou vídeo sobre como criar uma GUI com um botão Fechar.
Jochem Kuijpers
17

Eu armazenar a maioria dos meus projetos de hobby no Google Code, então eu apenas usar o site do projeto como o nome do pacote: com.googlecode.donkirkby.someproject.

Don Kirkby
fonte
8
Como ficamos cegos por não ver a loucura de nossas ações ?!
Joey Sabey
1
Você sente falta do Google Code, @Joey? Eu tenho usado o GitHub principalmente nos últimos anos, então tive que mudar alguns dos meus projetos antigos do Google Code antes que eles fossem desligados.
Don Kirkby
Você renomeou os pacotes, manteve os nomes dos códigos de googl ou ...?
serv-inc
1
Não usei nenhum código antigo desde que o mudei, @ serv-inc. Qualquer uma das opções funcionaria.
Don Kirkby
3

meu nome é anjan

geralmente eu uso com.anjan

Eu tenho minha própria companhia de fantasia - às vezes eu uso isso

a tradição com o sourceforge (como hibernate e outros pacotes mostrados) é net.sf. *

então, dependendo do seu humor, você pode ir com isso.

anjanb
fonte
13
A menos que você também possua anjan.com , acho que você está terrivelmente errado ao fazê-lo.
311 Fredrik
7
@ Fredrick, felizmente, parece que o anjan.com não lançará bibliotecas tão cedo.
CorsiKa 18/10/2013
1
@corsiKa: você está certo, desde que eu não esteja divulgando nada, estou bem. :-)
anjanb 23/10/2013
3
@anjanb Bem, eu fui ao site deles. Eles fazem comida para animais. Não sou especialista, mas a maioria das empresas de alimentos para animais não liberam muitas bibliotecas de software =)
corsiKa
3

Eu acho que você já deu certo. A tentação de evitar aqui é não se preocupar com o nome de um pacote. É fácil salvar algumas teclas pressionadas porque "Estou apenas escrevendo um código de teste". Mas o código fica bom, útil e grande, e você percebe que tem um começo sólido para o que pode ser uma biblioteca ou aplicativo de longa duração. Pode não ser uma biblioteca ou um aplicativo que saia da sua rede doméstica, mas o ponto é que você não pensou no futuro. Esse é o fantasma dinamarquês da ciência da computação - sempre pense no futuro, mesmo que só um pouquinho.

A convenção de nomenclatura que eu uso para o meu código de hobby é muito parecida com a sua. Eu tenho um diretório de nível superior chamado "futura" (razões longas e chatas para a criação desse nome), das quais todo o meu código fica suspenso. Eu tento organizar meu código em bibliotecas de pacotes, mesmo que seja uma classe ou pacote que nunca uso para outro projeto. Coloco todos os aplicativos (ou seja, qualquer coisa que tenha um void main (String [] args) na classe) na pasta futura.app. *. Também tento imitar os nomes dos pacotes padrão da biblioteca Java para meu próprio código, embora em alguns casos quebrei a convenção por causa de meus próprios gostos (por exemplo, futura.inet para Internet, não apenas soquete, código e futura.collections para Parafraseando David Mamet: Sempre seja genérico. Seja sempre genérico!

Pelo cuidado que você usou para postar a pergunta, eu suspeito que você também concorda com o meu último ponto: você não precisa tratar o hacker amador como um projeto de nível empresarial, mas se você trouxer parte dessa disciplina para o jogo em casa, o hobby é ainda mais gratificante.

Jim Nelson
fonte
2

Eu uso o meu URL do OpenID e depois anexo o nome do meu projeto. por exemplo, com.myopenid.cd1.twitteré o pacote raiz de um cliente do Twitter que estou desenvolvendo.

cd1
fonte
Eu gostei disso, mas depois percebi que não existe mais. :( janrain.com/myopenid-service-ends "Em 1 de fevereiro de 2014, o serviço MyOpenID foi desativado."
successhawk 12/17/17
2

Minha nomeação: prj.project_name.

Amir Saniyan
fonte
1

Eu apenas uso meu nome: sobrenome.initials.xxx, como uma boa relação entre brevidade e prevenção de colisões. Achei que isso daria um espaço de nome livre de colisão razoável, caso eu decidisse publicar o código publicamente. Eu também tenho um pequeno programa que escrevi que pode reembalar árvores de diretórios inteiras, então achei que seria necessário reembalar para publicação é bastante indolor ... portanto, não perdi muito tempo com isso.

Após o sobrenome.initials.xxx, eu uso qualquer aplicativo para pacotes de aplicativos, lib para pacotes de bibliotecas e tst para coisas com as quais estou experimentando.

Lawrence Dol
fonte
1

o que você pensa sobre lastname.firstname.project ??? como luz.marlon.project?

Marlon
fonte
16
Isso pode funcionar para você, mas John Smith e Bob Jones podem ter conflitos quando quiserem liberar seu código algum dia.
Bill o Lagarto
0

Eu pensei em fazer essa mesma pergunta. Até agora, usei o prefixo com.tehvan, mesmo que eu não tenha uma empresa.

tehvan
fonte