web-dev-qa-db-ja.com

名前空間の命名規則

再利用可能なコンポーネントを書いているあなたにとって、.NETフレームワークの機能を拡張する場合のベストプラクティスは何だと思いますか?

たとえば、.NETには存在しないため、現在Pop3ライブラリを作成しています。カスタム名前空間を作成しますか、それともSystem.Net.Mailを使用しますか?

49
Vince Panuccio

Namespace Naming Guidelines から:

名前空間に名前を付けるための一般的なルールは、会社名の後にテクノロジー名が続き、オプションで次のように機能とデザインを使用することです。コードをコピー

CompanyName.TechnologyName[.Feature][.Design]

一般に、フレームワークまたはライブラリのデフォルトのネームスペースに物事を含めることは非常に悪い習慣です。これは、新しい名前空間が、すべての人に配布されるフレームワークの一部である既存のライブラリの一部であるか、他の誰かによって追加されたカスタムフレームワークの一部であるかという点で混乱を引き起こす可能性があります。

また、命名規則は、CompanyNameなどの一意の識別子を持つことにより、名前空間の衝突を回避しようとします。また、新しいライブラリのソースに関する混乱と問題を減らします。

これはMicrosoftのことだけでなく、Javaでも同様です。Javaの「パッケージ」と呼ばれる名前空間には、 慣習に従って があります。

一意のパッケージ名のプレフィックスは常にすべて小文字ASCII文字で記述され、現在com、edu、gov、mil、net、org、または、ISO標準3166、1981で指定されている国を識別する英語の2文字コードの1つ。

パッケージ名の後続のコンポーネントは、組織独自の内部命名規則によって異なります。このような規則では、特定のディレクトリ名コンポーネントが部門名、部門名、プロジェクト名、マシン名、またはログイン名であることを指定する場合があります。

したがって、私が非常に素晴らしいソフトウェアを持っている場合、それはnet.coobird.superawesomesoftwareパッケージに含まれている可能性があります。

そして、デフォルトのJava.javax.com.Sun.パッケージを含むパッケージ名を使用することは大したことではありません。

63
coobird

名前空間の命名に関するガイドラインについては、MSDNの次の記事も参照してください。

名前空間の名前

名前空間に選択される名前は、名前空間の型によって使用可能になる機能を示す必要があります。たとえば、System.Net.Sockets名前空間には、開発者がソケットを使用してネットワーク経由で通信できるようにする型が含まれています。

名前空間名の一般的な形式は次のとおりです。

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

例えば、 Microsoft.WindowsMobile.DirectX

16
akjoshi