注
このコンテンツは、 フレームワーク設計ガイドライン (再利用可能な .NET ライブラリの規則、イディオム、パターン、第 2 版) から、Pearson Education, Inc. のアクセス許可によって再印刷されます。 そのエディションは2008年に出版され、その後 、本は第3版で完全に改訂されています。 このページの情報の一部が古くなっている可能性があります。
他の名前付けガイドラインと同様に、名前空間に名前を付ける際の目標は、フレームワークを使用するプログラマが名前空間の内容をすぐに把握するのに十分な明確さを作り出すことです。 次のテンプレートは、名前空間に名前を付けるための一般的な規則を指定します。
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
次に例を示します。
Fabrikam.Math
Litware.Security
✔️ 異なる会社の名前空間が同じ名前にならないように、名前空間名に会社名のプレフィックスを付けます。
✔️ 名前空間名の 2 番目のレベルで、バージョンに依存しない安定した製品名を使用してください。
❌ 企業内のグループ名は有効期間が短い傾向があるため、名前空間階層の名前の基礎として組織階層を使用しないでください。 関連テクノロジのグループを中心に名前空間の階層を整理します。
✔️ PascalCasing を使用し、ピリオド ( Microsoft.Office.PowerPoint
など) で名前空間コンポーネントを分離します。 ブランドが通常とは異なる文字のスタイルを使用している場合、たとえそれが一般的な文字スタイルから逸脱していても、ブランドで定義されたスタイルに従う必要があります。
✔️ 必要に応じて、複数形の名前空間名を使用することを検討してください。
たとえば、System.Collections
の代わりに System.Collection
を使用します。 ただし、ブランド名と頭字語は、この規則の例外です。 たとえば、System.IO
の代わりに System.IOs
を使用します。
❌ 名前空間とその名前空間内の型に同じ名前を使用しないでください。
たとえば、 Debug
を名前空間名として使用せず、同じ名前空間に Debug
という名前のクラスを指定します。 いくつかのコンパイラでは、このような型を完全修飾する必要があります。
名前空間と型名の競合
❌
Element
、Node
、Log
、Message
などのジェネリック型名は導入しないでください。
これを行うと、一般的なシナリオで型名の競合が発生する可能性が非常に高くなります。 ジェネリック型名 (FormElement
、 XmlNode
、 EventLog
、 SoapMessage
) を修飾する必要があります。
名前空間のカテゴリごとに型名の競合を回避するための特定のガイドラインがあります。
アプリケーション モデルの名前空間
1 つのアプリケーション モデルに属する名前空間は非常に頻繁に一緒に使用されますが、他のアプリケーション モデルの名前空間ではほとんど使用されません。 たとえば、 System.Windows.Forms 名前空間は、 System.Web.UI 名前空間と共に使用されることはほとんどありません。 よく知られているアプリケーション モデルの名前空間グループの一覧を次に示します。
System.Windows*
System.Web.UI*
❌ 1 つのアプリケーション モデル内の名前空間の型に同じ名前を付けないでください。
たとえば、
Page
名前空間には既に System.Web.UI.Adapters という名前の型が含まれているため、System.Web.UIという名前の型をPage
名前空間に追加しないでください。インフラストラクチャの名前空間
このグループには、一般的なアプリケーションの開発中にほとんどインポートされない名前空間が含まれています。 たとえば、
.Design
名前空間は主にプログラミング ツールを開発するときに使用されます。 これらの名前空間の型との競合を回避することは重要ではありません。コア名前空間
コア名前空間には、アプリケーション モデルの名前空間とインフラストラクチャ名前空間を除く、すべての
System
名前空間が含まれます。 コア名前空間には、System
、System.IO
、System.Xml
、System.Net
などがあります。❌ Core 名前空間内の任意の型と競合する型名を指定しないでください。
たとえば、型名として
Stream
を使用しないでください。 これは、非常に一般的に使用される型である System.IO.Streamと競合します。テクノロジ名前空間グループ
このカテゴリには、
(<Company>.<Technology>*
やMicrosoft.Build.Utilities
など、同じ最初の 2 つの名前空間ノードMicrosoft.Build.Tasks
) を持つすべての名前空間が含まれます。 1 つのテクノロジに属する型が互いに競合しないことが重要です。❌ 1 つのテクノロジ内で他の型と競合する型名を割り当てないでください。
❌ テクノロジ名前空間内の型とアプリケーション モデル名前空間の型間で型名の競合を発生させないでください (テクノロジがアプリケーション モデルで使用されることを意図していない場合)。
Portions © 2005, 2009 Microsoft Corporation. 無断転載を禁じます。
フレームワーク設計ガイドライン:再利用可能な .NET ライブラリの規則、イディオム、パターン、Krzysztof Cwalina および Brad Abrams による第 2 版は、2008 年 10 月 22 日に Microsoft Windows 開発シリーズの一部として Addison-Wesley Professional によって公開されました。