アットウィキロゴ

名前空間の名前

名前空間に適切な名前を付けることで、プログラマはその名前空間にどういったものがあるのか、すぐに判断することができる。
次のテンプレートは、名前空間の命名規則を示している。

Softcube.メインカテゴリ.サブカテゴリ

次に名前空間の具体例も示しておこう。

​Softcube.Utility
Softcube.Geometry
Softcube.Mvvm
Softcube.SceneGraph
Softcube.SceneGraph.Graphics
Softcube.SceneGraph.Physics
Softcube.Models.Domain
Softcube.Models.Simulation
Softcube.ViewModels
Softcube.Views
 

✔ Pascal 記法を使用し、ピリオド(.)で名前空間のコンポーネントを分割しよう。
お客様のブランド名が一般的な名前空間の大文字と小文字の表記から逸脱している場合、ブランドで定義された大文字と小文字の表記に従おう。

✔ 適切な個所では名前空間の名前に複数形を使用することを検討しよう。
たとえば、Softcube.ViewModel の代わりに Softcube.ViewModels を使用する。
ただしブランド名や略語は、この規則の例外とする。

✖ 名前空間とその名前空間内の型に同じ名前を使用しない。
たとえば、Debug という名前空間内に同じ Debug というクラス名を使用しない。

 

名前空間と型名の競合

このセクションに示すガイドラインのいくつかは、次のカテゴリの名前空間に関連している。

  • アプリケーション モデル名前空間
    アプリケーション モデルの名前空間は、アプリケーションのクラスに固有の機能セットを提供する。
    たとえば、System.Windows.Forms 名前空間の型は、Windows フォーム クライアント アプリケーションの作成に必要な機能を提供する。
    System.Web 名前空間の型は、Web ベースのサーバー アプリケーションの作成をサポートする。
     
  • インフラストラクチャ名前空間
    インフラストラクチャ名前空間は、通常のコードではめったに参照されない。
    たとえば、*.Designer 名前空間の型は VisualStudio によって使用される。*.Permissions 名前空間もインフラストラクチャ名前空間の 1 つだ。
     
  • コア名前空間
    コア名前空間とは、アプリケーション名前空間とインフラストラクチャ名前空間を除く System.* 名前空間のことだ。
    System と System.Text は、コア名前空間の一例である。
     

✔ 既存の名前と競合する名前空間名や型名を選択した場合、ライブラリ ユーザーは、影響を受ける項目への参照を修飾しなくてはならない。
大部分のコードでは、このような事態を避けよう。

✖ Element 、Node 、Log 、および Message など一般的な名前を型名として使用しない。
一般的な名前の競合は高い確率でおこる。一般的な名前は修飾できないかを検討しよう (FormElement, 、XmlNode, 、EventLog, 、SoapMessage)。
山﨑:上記はマイクロソフトのガイドラインからの引用だが、この規則は不要だと思う(厳守すると可読性が下がるように思う)。
たとえば、Color、Material、Line、Arc、Point3d、Vector3dなどは一般的な名前の主要な型だが、修飾語やプレフィックスをつけると読みにくい。
そもそも .NET Framework 内にも、File、Directory、TimeSpan、Color など
一般的な名前の型が数多く含まれている。

✖ コア名前空間の型と競合する名前は必ず避けよう。
たとえば、Stream という型名を使用しないで欲しい。非常に良く使用する System.IO.Stream と競合するからだ。

最終更新:2017年06月20日 00:07