Javaの個人/趣味のプロジェクトには、どのパッケージ命名規則を使用していますか?


143

ドメイン名を使用して一意のパッケージ名(つまりpackage com.stackoverflow.widgets)を作成するという標準のJavaパッケージの命名規則にはすでに慣れています。ただし、個人プロジェクトのパッケージ名を選択する方法についての推奨事項を見たことがありません。これは本当に個人的な好みの問題だからだと思います。

それで、本番環境に決して入れない個人プロジェクトのパッケージ名をどのように選択しますか(暇なときに新しいフレームワークを実験しているかもしれません)。パッケージ構造を作成するために使用できるドメインを持つ個人のWebサイトがない場合、何をしますか(またはしますか)。趣味のプロジェクト用の新しいパッケージ名を生成するための論理システムが整っていますか、または単純な使い捨てパッケージ名を使用していますmypackageか?

これについてさまざまな人々の考えを知りたくてたまらないので、これをコミュニティーwikiにしました。

個人的にはあまり考えたことはありませんが、Wicketで遊んでみたかったですことがありませんでしたが、今夜ですが、趣味のプロジェクトをどう整理したいのかよくわからなかったんです。趣味のプロジェクト(少なくとも私の心では)のための個別の個別のパッケージ命名規則は、個人用コードと作業関連コードを互いに明確に分離するための良い方法として役立ちます。

個人プロジェクトのソースを単一のルートフォルダーに保持するために、単純な階層命名規則を考えていました。

  • myprojectsルートフォルダとして使用
  • プロジェクト名を追加する
  • 追加のサブパッケージ名を追加します

したがって、私のWicketプロジェクトはパッケージに含まれ、myprojects.learningwicket単体テストはパッケージに含まれますmyprojects.learningwicket.tests(たとえば)。


1
一般的には、個人用ドメイン(firstname-lastname.net)を取得し、それをパッケージ名として使用します。パッケージの目的はグローバルに一意であるため、myprojectsは実際にはそれをカットしません。
Vladimir Dyuzhev、2008年

5
.onionドメインの使用もオプションです(などonion.duskgytldkxiuqc6.packagename)。秘密鍵が秘密のままである限り、ドメイン名を制御できます。したがって、登録(生成)は自由であり、(従来のドメインとは異なり)永続的です。これはJava規約の文字に準拠しており、ユーザーを一意に識別します。
サスタニン2013年

14
常にGitHubアカウントを作成し、io.github.username。*を使用できます。
Bardi Harbourow

2
@BardiHarborowありがとう、私はあなたの提案を使用しました。
Nick Volynkin、2015年

3
@ GabrielBB、GitHubページを使用すると、yourusername.github.ioでHTMLおよびJekyllサイトをホストできるため、github.ioのサブドメインは、github.comのサブドメインよりもGitHubユーザーに対応する方が「保証」されます(内部で使用される場合があります) GitHubプロジェクトはいつでも)。
Bardi Harbourow 2016

回答:


49

他の誰もコードを使用しない個人的なプロジェクトを行っているだけであれば、好きなパッケージ名を作成できます。始まること何かをしないでくださいcom.か、net.または他のトップレベルドメインは、それはあなたがドメイン名を所有していることを暗示するので、けれども(すなわち。使用してcom.johnあなたの名前はジョンであることを起こるという理由だけで、あなたのパッケージ名としては良いアイデアではありません) 。

他の人にコードを渡す場合は、グローバルに一意のパッケージ名を使用する必要があります。これは、Javaの規則によると、ドメイン名を登録して使用する必要があることを意味します。


1
したがって、com.xyzこのパッケージ名をどこかに登録する必要があるので、パッケージ名をアドレス指定したい場合は?PS xyzは私のクライアントです。
Prasad 14

9
そのgithub idとgithubドメインを使用できるかどうか疑問に思いますか?例えばcom.github.mygithubid.myproject
キリルG.

2
@KirillG。GitHub IDはいつでも何回でも変更できるため、お勧めしません。確かに、どのドメインも変更できますが、それほど簡単でも頻繁でもありません(通常はそうではありません)。趣味のプロジェクトには問題ないと思いますが。
サラ2015年

26

私は自分のイニシャルを使用します:fg.nameofproject.etc

タイピングを減らします。いつでもsf.netまたはcomを前に付けることができます。または組織。またはcom.google ..

プロジェクトはパーソナルトリートなので、プレスしたてのパーソナライズされたギフトシャツと同じように特別です。


42
bond.james.007
2013

19
@clickに応じてガイドラインだろうbond.james._007-それに同じリングを持っていない...: - {
corsiKa


19

<sarcasm>ええと。自尊心のあるプログラマは、自分のドメイン名を持っています。これは明らかにトリックの質問です。誰もが自分の個人ドメイン名を持っています!</sarcasm>:-)

わかりました、すべての真剣に、カスタムドメイン名を購入することはおそらく最も簡単なオプションです。年間約10ドルで、ドメインをホストしてメールを転送する信頼できるプロバイダーを見つけることができます。


18
不思議なことに、これはあなたの自信を後押しします。
jamesh 2008年

26
良い答えですが、最初のプログラマーはおそらく、閉じるボタン付きのGUIを作成する方法についてのチュートリアルWebサイトまたはビデオに従うためだけにWebサイトを購入することを望まないでしょう。
Jochem Kuijpers 2014年

17

私は趣味のプロジェクトのほとんどをGoogle Codeに保存しているため、プロジェクトサイトをパッケージ名として使用しています:com.googlecode.donkirkby.someproject


8
私たちの行動の愚かさを見ないために、どれほど盲目であったでしょうか?
Joey Sabey、2015年

1
@ Joey、Google Codeが恋しい?私は過去数年間、ほとんどGitHubを使用しきたので、シャットダウンする前に、いくつかの古いプロジェクトをGoogle Codeから移動する必要がありました。
Don Kirkby、2015年

それで、パッケージの名前を変更したり、googlecode名を保持したりしましたか、それとも...
serv-inc 2018

1
古いコード@ serv-incを移動して以来、使用していません。どちらのオプションでも機能します。
Don Kirkby

3

私の名前はアンジャンです

通常、私はcom.anjanを使用します

私は自分のファンタジー会社を持っています-時々それを使います

sourceforge(hibernateおよび他のパッケージが示すように)の伝統はnet.sf. *です。

だから、気分次第でそれでいい。


13
anjan.comも所有しているのでなければ、そうするのはひどく間違っていると思います。
フレドリック、

7
@Fredrick幸いなことに、anjan.comがすぐにライブラリをリリースする予定はないようです。
corsiKa 2013年

1
@corsiKa:そうです、私が何もリリースしない限り、大丈夫です。:-)
anjanb 2013年

3
@anjanbさて、私は彼らのウェブサイトに行ってきました。彼らはペットフードをします。私は専門家ではありませんが、ほとんどのペットフード会社は多くのソフトウェアライブラリをリリースしていません=)
corsiKa 2013年

3

うまくいったと思います。ここで避けたい誘惑は、パッケージ名をまったく気にしないことです。「テストコードを書いているだけです」ので、キーストロークをいくつか保存するのは簡単です。しかし、コードは適切で便利で大きなものになり、長寿命のライブラリまたはアプリケーションの可能性について、しっかりとしたスタートがあることに気付きます。それはあなたのホームネットワークを離れるライブラリまたはアプリケーションではないかもしれませんが、要点は、あなたは先を考えていなかったことです。それがデンマークのコンピュータサイエンスのゴーストです。少しでも、常に前に考えてください。

私の趣味のコードに使用する命名規則は、あなたの規則と非常によく似ています。「futura」という名前のトップレベルディレクトリ(その名前が生まれた長い、退屈な理由)があり、すべてのコードがハングしています。私はコードをパッケージライブラリに整理しようとします。たとえそれが別のプロジェクトで使用することのないクラスまたはパッケージであったとしてもです。すべてのアプリケーション(つまり、クラスにvoid main(String [] args)を持つもの)をfutura.app。*フォルダーに配置します。また、私は自分のコードの標準Javaライブラリパッケージ名を模倣しようとしますが、いくつかのケースでは自分の好み(つまり、インターネットではfutura.inet、ソケット、コードだけではなく、非futura.collectionsではない)のために規約に違反しました-util stuff。)David Mametを言い換えると:常に一般化すること。 常に一般化してください!

あなたが質問を投稿するのに使用した注意から、私はあなたも私の最後の点に同意するのではないかと思います:趣味のハッキングをエンタープライズレベルのプロジェクトとして扱う必要はありませんが、その規律の一部を家庭用ゲームに持っていれば、趣味はさらにやりがいがあります。


2

OpenID URLを使用してから、プロジェクトの名前を追加します。たとえば、com.myopenid.cd1.twitter私が開発しているTwitterクライアントのルートパッケージです。


私はこれが好きでしたが、それがもう存在しないことに気付きました。:( janrain.com/myopenid-service-ends「2014年 2月1日の時点で、MyOpenIDサービスはオフになっています。」
successhawk


1

私は自分の名前を使用します。surname.initials.xxxは、簡潔さと衝突回避の良い組み合わせです。コードを公開することを選択した場合、衝突のない適切な名前空間が提供されると考えました。私はまた、ディレクトリツリー全体を再パッケージ化できる小さなプログラムを作成したので、公開するために再パッケージ化する必要があると思いましたが、それは非常に簡単です...それで、あまり寝過ぎませんでした。

surname.initials.xxxの後、アプリケーションパッケージにはapp、ライブラリパッケージにはlib、純粋に実験しているものにはtstを使用します。


1

あなたはlastname.firstname.projectについてどう思いますか??? luz.marlon.projectのように?


16
それはあなたにとってはうまくいくかもしれませんが、ジョン・スミスとボブ・ジョーンズがいつかコードをリリースしたいときに衝突するかもしれません。
トカゲに請求する

0

私はこれと同じ質問をすることを考えました。これまでのところ、会社はありませんが、com.tehvanというプレフィックスを使用しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.