名前空間の名前付けのガイドライン

名前空間に名前を付けるときの一般的な規則として、次のように、企業名 (CompanyName) の次にテクノロジ名 (TechnologyName) を続け、オプションで機能 (Feature) およびデザイン (Design) を追加します。

CompanyName.TechnologyName[.Feature][.Design]

次に例を示します。

Microsoft.Media
Microsoft.Media.Design

名前空間名にプリフィックスとして企業名または知名度の高いブランド名を付けることにより、同じ名前の 2 つの名前空間が公開される可能性は少なくなります。たとえば、Microsoft.Office は、Microsoft が提供する Office Automation Classes に適したプリフィックスです。

名前の階層構造の第 2 レベルには、テクノロジ名として確立され、認識されている名前を使用します。名前空間の階層構造の基盤としては、組織的な階層構造を使用します。デザイン時の機能を提供する型が含まれている名前空間は、基本名前空間名に .Design サフィックスを付けた名前にします。たとえば、System.Windows.Forms.Design 名前空間には、System.Windows.Forms をベースとしたアプリケーションをデザインするときに使用するデザイナと関連クラスが含まれています。

入れ子になった名前空間は、外側の名前空間の型に依存します。たとえば、System.Web.UI.Design のクラスは、System.Web.UI のクラスに依存します。しかし、System.Web.UI のクラスが、System.Web.UI.Design のクラスに依存することはありません。

名前空間名には Pascal 形式を使用し、Microsoft.Office.PowerPoint のように、ピリオドで区切って論理コンポーネント名を続けます。ブランド名で通常とは異なる形で大文字と小文字を混在させている場合には、ブランド名の形式に従い、先に述べた Pascal 形式を使用するという規則に反してもかまいません。たとえば、名前空間 NeXT.WebObjectsee.cummings は、Pascal 形式の規則に反してはいますが、適切な名前です。

意味的に適切な場合は、複数形の名前空間名を使用します。たとえば、System.Collection ではなく System.Collections を使用する場合があります。この規則は、ブランド名と省略形には当てはまりません。たとえば、System.IOs ではなく System.IO を使用します。

名前空間とクラスに同じ名前を使用しないでください。たとえば、Debug 名前空間と Debug クラスの両方を作成するのは避けてください。

最後に、名前空間名をアセンブリ名と対応付ける必要はありません。たとえば、アセンブリに MyCompany.MyTechnology.dll という名前を付けた場合でも、その中に MyCompany.MyTechnology 名前空間が含まれている必要はありません。

参照

クラス ライブラリ開発者向けのデザイン ガイドライン | .NET Framework クラス ライブラリの概要