Welche Paketbenennungskonvention verwenden Sie für persönliche / Hobbyprojekte in Java?

142

Ich bin bereits mit der Standardkonvention zur Benennung von Java-Paketen vertraut, bei der ein Domänenname zum Erstellen eines eindeutigen Paketnamens (dh eines Pakets com.stackoverflow.widgets) verwendet wird. Ich habe jedoch noch nie Empfehlungen zur Auswahl von Paketnamen für persönliche Projekte erhalten. Ich nehme an, weil dies daran liegt, dass dies wirklich eine Frage des persönlichen Geschmacks ist.

Wie wählen Sie Paketnamen für persönliche Projekte aus, die es nie in die Produktion schaffen (möglicherweise experimentieren Sie in Ihrer Freizeit mit einem neuen Framework). Angenommen, Sie haben keine persönliche Website, deren Domain Sie zum Erstellen Ihrer Paketstruktur verwenden können. Was tun (oder würden) Sie? Haben Sie ein logisches System zum Generieren neuer Paketnamen für Hobbyprojekte oder verwenden Sie einfach wegwerfbare Paketnamen wie mypackage?

Da ich nur neugierig bin, was die verschiedenen Leute darüber denken, habe ich dies zu einem Community-Wiki gemacht.

Für mich persönlich habe ich nie viel darüber nachgedacht, aber ich wollte heute Abend mit Wicket herumspielen und mir fiel ein, dass ich keine klare Vorstellung davon habe, wie ich meine Hobbyprojekte organisieren möchte. Eine separate, eindeutige Namenskonvention für Pakete für Hobbyprojekte (zumindest in meinen Augen) wäre eine gute Möglichkeit, persönlichen und arbeitsbezogenen Code klar voneinander zu trennen.

Ich dachte an eine einfache hierarchische Namenskonvention, um die Quelle für meine persönlichen Projekte in einem einzigen Stammordner zu speichern:

  • Verwenden Sie myprojectsals Stammordner
  • Fügen Sie den Projektnamen hinzu
  • Fügen Sie zusätzliche Unterpaketnamen hinzu

Mein Wicket-Projekt wäre also im Paket myprojects.learningwicketund Unit-Tests wären im Paket myprojects.learningwicket.tests(zum Beispiel).

Mike Spross
quelle
1
Besorgen Sie sich häufig eine persönliche Domain (Vorname-Nachname.net) und verwenden Sie diese als Paketnamen. Der Zweck des Pakets ist es, global einzigartig zu sein, damit myprojects es nicht wirklich schneidet.
Vladimir Dyuzhev
5
Die Verwendung einer .onion-Domain ist ebenfalls eine Option (wie onion.duskgytldkxiuqc6.packagename). Solange der private Schlüssel geheim bleibt, haben Sie die Kontrolle über den Domainnamen. Es ist also kostenlos zu registrieren (zu generieren) und permanent (im Gegensatz zu herkömmlichen Domains). Es entspricht dem Buchstaben der Java-Konvention und identifiziert Sie eindeutig.
Sastanin
14
Sie können jederzeit ein GitHub-Konto erstellen und io.github.username verwenden. *.
Bardi Harborow
2
@BardiHarborow danke, ich habe deinen Vorschlag verwendet.
Nick Volynkin
3
@GabrielBB, GitHub Pages ermöglicht es Ihnen, HTML- und Jekyll-Sites unter yourusername.github.io zu hosten. Daher entsprechen Subdomains von github.io "garantiert" GitHub-Benutzern als Subdomains von github.com (die möglicherweise für interne Benutzer verwendet werden) GitHub-Projekte jederzeit).
Bardi Harborow

Antworten:

48

Wenn Sie nur persönliche Projekte durchführen, bei denen niemand den Code verwendet, können Sie einen Paketnamen erstellen, den Sie mögen. Machen Sie sich jedoch nichts aus, das mit com.oder einer net.anderen Top-Level-Domain beginnt , da dies bedeuten würde, dass Sie den Domain-Namen besitzen (dh com.johnals Paketname zu verwenden, nur weil Ihr Name zufällig John ist, ist keine gute Idee). .

Wenn Sie den Code an andere Personen weitergeben möchten, sollten Sie einen global eindeutigen Paketnamen verwenden. Gemäß den Java-Konventionen sollten Sie sich registrieren und einen Domänennamen verwenden.

Greg Hewgill
quelle
1
Also, wenn ich den Paketnamen ansprechen möchte, wie com.xyzsollte dieser Paketname irgendwo registriert werden? PS xyzist mein Kunde.
Prasad
9
Ich frage mich, ob ich meine Github-ID für diese und die Github-Domain verwenden kann. ZB com.github.mygithubid.myproject?
Kirill G.
2
@KirillG. Ich würde es irgendwie empfehlen, da GitHub-IDs jederzeit und beliebig oft geändert werden können. Zugegeben, jede Domain kann sich ändern, aber nicht so einfach oder oft (normalerweise sowieso nicht). Obwohl ich denke, dass es für Hobbyprojekte in Ordnung ist.
Sara
26

Ich benutze nur meine Initialen: fg.nameofproject.etc

Es reduziert das Tippen. Es kann jederzeit mit sf.net oder com vorangestellt werden. oder org. oder com.google ..

Da das Projekt ein persönlicher Genuss ist, ist es genau wie Ihr frisch gepresstes personalisiertes Geschenkhemd etwas Besonderes - es wird sich gut anfühlen.

Gulden
quelle
42
bond.james.007
Klicken Sie auf Upvote
19
@click nach den Richtlinien , die wäre bond.james._007- hat nicht den gleichen
Klang
20
pmurray_at_bigpond_dot_com.project.package
Paulmurray
quelle
2
+1. Klug. Dadurch erhalten Sie einen eindeutigen Paketnamen und können den Autor auf einmal identifizieren.
Mike Spross
19

<sarcasm>Bah. Jeder Programmierer mit Selbstachtung würde seinen eigenen Domainnamen haben. Dies ist eindeutig eine Trickfrage. Jeder hat seinen eigenen Domainnamen! </sarcasm>:-)

Ok, im Ernst, der Kauf eines benutzerdefinierten Domainnamens ist wahrscheinlich die einfachste Option. Für etwa 10 US-Dollar pro Jahr finden Sie seriöse Anbieter, die die Domain hosten und E-Mails weiterleiten.

James Schek
quelle
18
Seltsamerweise stärkt dies auch Ihr Selbstvertrauen.
Jamesh
26
Gute Antwort, aber ein Startprogrammierer möchte wahrscheinlich keine Website kaufen, nur um einer Tutorial-Website oder einem Video zu folgen, wie man eine GUI mit einer Schaltfläche zum Schließen erstellt.
Jochem Kuijpers
16

Ich speichere die meisten meiner Hobbyprojekte in Google Code, daher verwende ich die Projektwebsite nur als Paketnamen : com.googlecode.donkirkby.someproject.

Don Kirkby
quelle
8
Wie blind hätten wir sein können, die Torheit unserer Handlungen nicht zu sehen?!
Joey Sabey
1
Sie vermissen Google Code, @Joey? Ich habe GitHub in den letzten Jahren hauptsächlich verwendet , daher musste ich nur einige meiner alten Projekte von Google Code verschieben, bevor sie heruntergefahren wurden.
Don Kirkby
Haben Sie die Pakete umbenannt, die Google-Code-Namen beibehalten oder ...?
serv-inc
1
Ich habe keinen der alten Codes verwendet, seit ich sie verschoben habe, @ serv-inc. Jede Option würde funktionieren.
Don Kirkby
3

Mein Name ist Anjan

Normalerweise benutze ich com.anjan

Ich habe eine eigene Fantasy-Firma - manchmal benutze ich das

Die Tradition mit SourceForge (wie der Ruhezustand und andere Pakete gezeigt haben) ist net.sf. *

Je nach Stimmung können Sie also damit anfangen.

anjanb
quelle
13
Es sei denn, Sie besitzen auch anjan.com. Ich denke, Sie liegen furchtbar falsch.
Fredrik
7
@Fredrick zum Glück sieht es so aus, als würde anjan.com in Kürze keine Bibliotheken mehr veröffentlichen.
CorsiKa
1
@corsiKa: Du hast recht, solange ich nichts veröffentliche, bin ich in Ordnung. :-)
Anjanb
3
@anjanb Nun, ich ging zu ihrer Website. Sie machen Tiernahrung. Ich bin kein Experte, aber die meisten Tiernahrungsunternehmen veröffentlichen nicht viele Softwarebibliotheken =)
corsiKa
3

Ich denke, du hast es geschafft. Die Versuchung, dies zu vermeiden, besteht darin, sich überhaupt nicht mit einem Paketnamen zu beschäftigen. Es ist einfach, ein paar Tastenanschläge zu speichern, weil "ich nur einen Testcode schreibe". Aber dann wird der Code gut und nützlich und groß, und dann stellen Sie fest, dass Sie einen soliden Start für eine möglicherweise langlebige Bibliothek oder Anwendung haben. Es ist möglicherweise keine Bibliothek oder Anwendung, die jemals Ihr Heimnetzwerk verlässt, aber der Punkt ist, dass Sie nicht vorausgedacht haben. Das ist der dänische Geist der Informatik - denken Sie immer voraus, wenn auch nur ein bisschen.

Die Namenskonvention, die ich für meinen Hobby-Code verwende, ist Ihrer sehr ähnlich. Ich habe ein Verzeichnis der obersten Ebene mit dem Namen "futura" (lange, langweilige Gründe, warum dieser Name entstanden ist), von dem mein gesamter Code abhängt. Ich versuche, meinen Code in Paketbibliotheken zu organisieren, auch wenn es sich um eine Klasse oder ein Paket handelt, das ich nie für ein anderes Projekt verwende. Ich platziere alle Anwendungen (dh alles, was eine void main (String [] args) in der Klasse hat) im Ordner futura.app. *. Ich versuche auch, die Standard-Paketnamen der Java-Bibliothek für meinen eigenen Code nachzuahmen, obwohl ich in einigen Fällen aufgrund meines eigenen Geschmacks gegen die Konvention verstoßen habe (dh futura.inet für das Internet, nicht nur Socket, Code und futura.collections für nicht -util stuff.) Um David Mamet zu paraphrasieren: Immer generisch sein. Generiere immer!

Aufgrund der Sorgfalt, mit der Sie die Frage gestellt haben, stimmen Sie vermutlich auch meinem letzten Punkt zu: Sie müssen Hobby-Hacking nicht als Projekt auf Unternehmensebene behandeln, aber wenn Sie einen Teil dieser Disziplin in das Heimspiel einbringen, Das Hobby ist umso lohnender.

Jim Nelson
quelle
2

Ich verwende meine OpenID-URL und hänge dann den Namen meines Projekts an. Zum Beispiel com.myopenid.cd1.twitterist das Root-Paket eines Twitter-Clients, den ich entwickelt habe.

cd1
quelle
Ich mochte das, aber dann wurde mir klar, dass es nicht mehr existiert. :( janrain.com/myopenid-service-ends "Ab dem 1. Februar 2014 wurde der MyOpenID-Dienst deaktiviert."
successhawk
2

Meine Benennung : prj.project_name.

Amir Saniyan
quelle
1

Ich benutze nur meinen Namen: Nachname.initials.xxx, als eine schöne Mischung aus Kürze und Kollisionsvermeidung. Ich dachte mir, das würde einen vernünftigen kollisionsfreien Namespace ergeben, sollte ich mich jemals dafür entscheiden, den Code öffentlich zu veröffentlichen. Ich habe auch ein kleines Programm, das ich geschrieben habe und das ganze Verzeichnisbäume neu packen kann, also dachte ich mir, sollte ich es jemals neu packen müssen, um es zu veröffentlichen, ist es ziemlich schmerzlos ... deshalb habe ich nicht zu viel Schlaf darüber verloren.

Nach dem Nachnamen.initials.xxx verwende ich entweder App für Anwendungspakete, lib für Bibliothekspakete und tst für Dinge, mit denen ich nur experimentiere.

Lawrence Dol
quelle
1

Was denkst du über lastname.firstname.project ??? wie luz.marlon.project?

Marlon
quelle
16
Das könnte für Sie funktionieren, aber John Smith und Bob Jones könnten in Konflikte geraten, wenn sie eines Tages ihren Code veröffentlichen möchten.
Bill the Lizard
0

Ich dachte darüber nach, dieselbe Frage zu stellen. Bisher habe ich das Präfix com.tehvan verwendet, obwohl ich eigentlich keine Firma habe.

tehvan
quelle