名前空間の名前
名前空間用に選択した名前で、名前空間内の型によって使用できる機能を示す必要があります。 たとえば、System.Net.Sockets 名前空間に含まれる型を使用すると、開発者がソケットを使用してネットワーク経由で通信できます。
名前空間の名前の一般的な形式は次のとおりです。
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
たとえば、Microsoft.WindowsMobile.DirectX のようにします。
名前空間名には、プリフィックスとして企業名を付け、各企業の名前空間の名前とプリフィックスが重複しないようにしてください。
名前空間の第 2 レベルには、バージョンに依存しない、安定した製品名を使用してください。
企業内のグループ名は変更されることが多いため、名前空間の階層構造での命名基準として組織の階層構造を使用することは避けてください。
名前空間名は長期的に使用する、不変の識別子です。 組織が発展する中で、組織にさまざまな変更があっても名前空間名が廃止されることはないようにしてください。
Microsoft.Office.PowerPoint のように Pascal 形式を使用し、名前空間の構成要素をピリオドで区切ってください。 ブランド名で通常とは異なる形で大文字と小文字を混在させている場合は、ブランド名の形式に従い、標準の名前空間の形式から外れてもかまいません。
適切な場合には、複数形の名前空間名を使用することを検討してください。 たとえば、System.Collection ではなく System.Collections を使用します。 ただし、ブランド名や頭字語はこの規則の例外であり、 System.IOs ではなく System.IO などとします。
名前空間とその名前空間に含まれる型には、同じ名前を使用しないでください。 たとえば、名前空間名として Debug を使用しているときに、同じ名前空間内で Debug という名前のクラスを定義しないでください。 コンパイラによっては、このような型は完全修飾する必要があります。
名前空間名および型名の競合
既存の名前と競合する名前空間名や型名を選択した場合、ライブラリ ユーザーは、影響を受ける項目への参照を修飾しなければならなくなります。 大部分の開発シナリオでは、このような事態は避けてください。
このセクションに示すガイドラインのいくつかは、次のカテゴリの名前空間に関連します。
アプリケーション モデル名前空間
インフラストラクチャ名前空間
コア名前空間
テクノロジ名前空間グループ
アプリケーション モデルの名前空間は、アプリケーションのクラスに固有の機能セットを提供します。 たとえば、System.Windows.Forms 名前空間の型は、Windows フォーム クライアント アプリケーションの作成に必要な機能を提供します。 System.Web 名前空間の型は、Web ベースのサーバー アプリケーションの作成をサポートします。 一般に、同じ 1 つのアプリケーションで、異なるアプリケーション モデルに属する名前空間を使用することはないため、ライブラリを使用する開発者が名前の衝突の影響を受けることはあまりありません。
インフラストラクチャ アプリケーションは特化されたサポートを提供するため、プログラム コードで参照されることはめったにありません。 たとえば、*.Designer 名前空間の型は、プログラム開発ツールによって使用されます。 *.Permissions 名前空間もインフラストラクチャ名前空間の 1 つです。 インフラストラクチャ名前空間の型では、名前の衝突が、ライブラリを使用する開発者に影響する可能性はありません。
コア名前空間は、アプリケーション名前空間とインフラストラクチャ名前空間を除く System.* 名前空間です。 System と System.Text は、コア名前空間の例です。 コア名前空間の型では、名前の衝突を必ず避ける必要があります。
特定のテクノロジに属する名前空間では、第 1 レベルと第 2 レベルの識別子が同じになります (Company.technology.*)。 テクノロジ内での名前の衝突を避ける必要があります。
一般的な名前空間のガイドライン
Element、Node、Log、Message などのジェネリック型の名前を使用しないでください。 一般的なシナリオで型名の競合が発生する可能性がきわめて高くなります。 ジェネリック型の名前は、FormElement、XmlNode EventLog、SoapMessage のように修飾する必要があります。
アプリケーション名前空間のガイドライン
単一のアプリケーション モデル内の名前空間の型に同じ名前を割り当てないでください。
たとえば、Windows フォーム アプリケーションの開発者が使用する特別なコントロールのライブラリを作成する場合、Checkbox という名前の型を導入しないでください。アプリケーション モデルには、この名前を持つ型 (CheckBox) が既に存在するからです。
コア名前空間のガイドライン
コア名前空間の型と競合する型の名前を割り当てないでください。
たとえば、Directory を型名として使用しないでください。この名前を型名として使用すると、Directory 型と競合するからです。
テクノロジ名前空間のガイドライン
1 つのテクノロジ内で他の型と競合する型名を割り当てないでください。
テクノロジ名前空間とアプリケーションモデル名前空間に含まれる型の間では型名の競合が起こらないようにしてください。ただし、そのテクノロジをアプリケーション モデルで使用しない場合は除きます。
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。