Quelle convention de dénomination de package utilisez-vous pour les projets personnels / de loisirs en Java?

143

Je connais déjà la convention de dénomination de package Java standard consistant à utiliser un nom de domaine pour créer un nom de package unique (c'est-à-dire package com.stackoverflow.widgets). Cependant, je n'ai jamais vu de recommandations sur la façon de choisir les noms de package pour les projets personnels. Je suppose parce que c'est parce que c'est vraiment une question de goût personnel.

Alors, comment choisir les noms de packages pour des projets personnels qui ne seront jamais mis en production (vous pourriez expérimenter un nouveau cadre pendant votre temps libre). En supposant que vous ne disposez pas d'un site Web personnel dont vous pouvez utiliser le domaine pour créer la structure de votre package, que faites-vous (ou feriez-vous)? Avez-vous un système logique en place pour générer de nouveaux noms de packages pour les projets de loisirs, ou utilisez-vous simplement des noms de packages simples comme mypackage?

Puisque je suis simplement curieux de voir ce que pensent les différentes personnes à ce sujet, j'en ai fait un wiki communautaire.

Pour moi personnellement, je n'y ai jamais beaucoup réfléchi, mais je voulais jouer avec Wicket ce soir et je me suis rendu compte que je n'avais pas une idée claire de la façon dont je voulais organiser mes projets de loisirs. Une convention de dénomination de paquet distincte pour les projets de loisirs (du moins dans mon esprit) serait un bon moyen de séparer clairement le code personnel et le code lié au travail.

Je pensais à une simple convention de dénomination hiérarchique, pour conserver la source de mes projets personnels dans un seul dossier racine:

  • Utiliser myprojectscomme dossier racine
  • Ajouter le nom du projet
  • Ajoutez des noms de sous-packages supplémentaires

Ainsi, mon projet Wicket serait dans le package myprojects.learningwicketet les tests unitaires dans le package myprojects.learningwicket.tests(par exemple).

Mike Spross
la source
1
Commun, procurez-vous un domaine personnel (firstname-lastname.net) et utilisez-le comme nom de package. Le but du package est d'être globalement unique, donc mes projets ne le coupent pas vraiment.
Vladimir Dyuzhev
5
L'utilisation d'un domaine .onion est également une option (comme onion.duskgytldkxiuqc6.packagename). Tant que la clé privée reste secrète, vous contrôlez le nom de domaine. Il est donc gratuit de s'inscrire (générer) et c'est permanent (contrairement aux domaines conventionnels). Il est conforme à la lettre de la convention Java et vous identifie de manière unique.
sastanin
14
Vous pouvez toujours créer un compte GitHub et utiliser io.github.username. *.
Bardi Harborow
2
@BardiHarborow merci, j'ai utilisé votre suggestion.
Nick Volynkin
3
@GabrielBB, GitHub Pages vous permet d'héberger des sites HTML et Jekyll sur votre nom d'utilisateur.github.io, et par conséquent, les sous-domaines de github.io sont plus «garantis» pour correspondre aux utilisateurs de GitHub que les sous-domaines de github.com (qui peuvent être utilisés pour Projets GitHub à tout moment).
Bardi Harborow

Réponses:

49

Si vous ne faites que des projets personnels où personne d'autre n'utilisera le code, vous pouvez créer un nom de package que vous aimez. Cependant, ne créez pas quelque chose qui commence par com.ou net.ou un autre domaine de premier niveau, car cela impliquerait que vous possédez le nom de domaine (c'est-à-dire com.johnque l' utilisation comme nom de votre package simplement parce que votre nom se trouve être John n'est pas une bonne idée) .

Si vous allez donner le code à quelqu'un d'autre, vous devez utiliser un nom de package globalement unique, ce qui, selon les conventions Java, signifie que vous devez vous enregistrer et utiliser un nom de domaine.

Greg Hewgill
la source
1
Donc, si je veux adresser le nom du package, ce nom de package com.xyzdoit-il être enregistré quelque part ?? PS xyzest mon client.
Prasad
9
Je me demande si je peux utiliser mon identifiant github pour cela et le domaine github? Par exemple com.github.mygithubid.myproject?
Kirill G.
2
@KirillG. Je le recommanderais en quelque sorte, car les identifiants GitHub peuvent être modifiés à tout moment, autant de fois que nécessaire. Certes, n'importe quel domaine peut changer, mais pas aussi facilement ou souvent (normalement pas du tout). Bien que je suppose que c'est OK pour les projets de loisirs.
sara
26

J'utilise juste mes initiales: fg.nameofproject.etc

Cela réduit la frappe. Il peut être préfixé à tout moment avec sf.net ou com. ou org. ou com.google ..

Comme le projet est un traitement personnel, il est spécial, tout comme votre chemise cadeau personnalisée fraîchement pressée - elle se sentira bien.

Florin
la source
42
bond.james.007
Cliquez sur Upvote le
19
@cliquez selon les directives qui seraient bond.james._007- n'a pas la même sonnerie ...: - {
corsiKa
20
pmurray_at_bigpond_dot_com.project.package
paulmurray
la source
2
+1. Intelligent. Cela vous donne un nom de package unique et identifie l'auteur en une seule fois.
Mike Spross
19

<sarcasm>Bah. Tout programmeur qui se respecte aurait son propre nom de domaine. C'est clairement une question piège. Chacun a son nom de domaine personnel! </sarcasm>:-)

Ok, sérieusement, acheter un nom de domaine personnalisé est probablement l'option la plus simple. Pour environ 10 $ par an, vous pouvez trouver des fournisseurs réputés pour héberger le domaine et transférer les e-mails.

James Schek
la source
18
Curieusement, cela renforcera également votre confiance en vous.
jamesh
26
Bonne réponse, mais un programmeur débutant ne veut probablement pas acheter un site Web juste pour suivre un site Web de tutoriel ou une vidéo sur la création d'une interface graphique avec un bouton de fermeture.
Jochem Kuijpers
17

Je stocke la plupart de mes projets de passe - temps dans Google Code, donc je viens d' utiliser le site du projet comme le nom du package: com.googlecode.donkirkby.someproject.

Don Kirkby
la source
8
A quel point aurions-nous pu être aveugles pour ne pas voir la folie de nos actions?!
Joey Sabey
1
Vous manquez Google Code, @Joey? J'ai principalement utilisé GitHub au cours des dernières années, je devais donc déplacer quelques-uns de mes anciens projets de Google Code avant qu'ils ne s'arrêtent.
Don Kirkby
Alors avez-vous renommé les paquets, gardé les noms de googlecode, ou ...?
serv-inc
1
Je n'ai utilisé aucun ancien code depuis que je l'ai déplacé, @ serv-inc. L'une ou l'autre option fonctionnerait.
Don Kirkby le
3

mon nom est anjan

généralement, j'utilise com.anjan

J'ai ma propre entreprise fantastique - parfois j'utilise ça

la tradition avec sourceforge (comme hibernate et d'autres packages l'ont montré) est net.sf. *

donc, selon votre humeur, vous pouvez y aller.

Anjanb
la source
13
À moins que vous ne possédiez également anjan.com, je pense que vous avez terriblement tort de le faire.
Fredrik
7
@Fredrick heureusement, il semble que anjan.com ne publiera pas de bibliothèques de si tôt.
corsiKa
1
@corsiKa: tu as raison, tant que je ne lâche rien, ça va. :-)
anjanb
3
@anjanb Eh bien, je suis allé sur leur site Web. Ils font de la nourriture pour animaux. Je ne suis pas un expert, mais la plupart des entreprises d'aliments pour animaux de compagnie ne publient pas beaucoup de bibliothèques de logiciels =)
corsiKa
3

Je pense que vous avez réussi. La tentation d'éviter ici est de ne pas se soucier du tout d'un nom de paquet. Il est facile d'enregistrer quelques frappes au clavier, car "J'écris juste du code de test". Mais ensuite, le code devient bon, utile et volumineux, puis vous réalisez que vous avez un bon départ pour ce qui peut être une bibliothèque ou une application de longue durée. Ce n'est peut-être pas une bibliothèque ou une application qui quitte votre réseau domestique, mais le fait est que vous n'avez pas réfléchi à l'avance. C'est le fantôme danois de l'informatique - pensez toujours à l'avance, ne serait-ce qu'un peu.

La convention de dénomination que j'utilise pour mon code de passe-temps ressemble beaucoup au vôtre. J'ai un répertoire de premier niveau nommé "futura" (raisons longues et ennuyeuses pour lesquelles ce nom est venu) sur lequel tout mon code est suspendu. J'essaie d'organiser mon code dans des bibliothèques de packages, même s'il s'agit d'une classe ou d'un package que je n'utilise jamais pour un autre projet. Je place toutes les applications (c'est-à-dire tout ce qui a un void main (String [] args) dans la classe) dans le dossier futura.app. *. J'essaie également d'imiter les noms de paquetages de bibliothèques Java standard pour mon propre code, bien que dans certains cas, j'ai rompu les conventions à cause de mes propres goûts (par exemple, futura.inet pour Internet, pas simplement socket, code et futura.collections pour non - trucs utilitaires.) Pour paraphraser David Mamet: Soyez toujours générique. Soyez toujours générique!

D'après le soin que vous avez utilisé pour publier la question, je suppose que vous êtes également d'accord avec mon dernier point: vous n'avez pas à traiter le piratage amateur comme un projet au niveau de l'entreprise, mais si vous apportez une partie de cette discipline au jeu à domicile, le hobby est d'autant plus gratifiant.

Jim Nelson
la source
2

J'utilise mon URL OpenID puis j'ajoute le nom de mon projet. par exemple, com.myopenid.cd1.twitterest le package racine d'un client Twitter que j'ai développé.

cd1
la source
J'ai aimé cela, mais j'ai réalisé que cela n'existait plus. :( janrain.com/myopenid-service-ends "Depuis le 1er février 2014, le service MyOpenID a été désactivé."
successhawk
2

Ma nomination: prj.project_name.

Amir Saniyan
la source
1

J'utilise juste mon nom: patronyme.initials.xxx, comme un bon compromis entre la brièveté et la prévention des collisions. J'ai pensé que cela donnerait un espace de noms raisonnable sans collision si jamais je choisissais de publier publiquement le code. J'ai aussi un petit programme que j'ai écrit qui peut reconditionner des arborescences de répertoires entières, alors j'ai pensé que si je devais un jour reconditionner pour la publication, c'était assez indolore ... donc je n'ai pas trop perdu de sommeil.

Après le nom de famille.initials.xxx, j'utilise l'une ou l'autre application pour les packages d'application, lib pour les packages de bibliothèque et tst pour les éléments que je suis en train d'expérimenter.

Lawrence Dol
la source
1

ce que vous pensez de lastname.firstname.project ??? comme luz.marlon.project?

Marlon
la source
16
Cela pourrait fonctionner pour vous, mais John Smith et Bob Jones peuvent rencontrer des conflits lorsqu'ils souhaitent publier leur code un jour.
Bill the Lizard
0

J'ai pensé à poser cette même question. Jusqu'à présent, j'ai utilisé le préfixe com.tehvan, même si je n'ai pas d'entreprise.

Tehvan
la source