secretbase.log

.NET/C#/Pythonなど

名前空間の名前

C# の場合、namespace はどのように付けたら良いか、以前調べた。

https://msdn.microsoft.com/ja-jp/library/ms229026(v=vs.100).aspx

から抜粋。

一般的な形式

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

説明

  • 名前空間名には、プリフィックスとして企業名を付け、各企業の名前空間の名前とプリフィックスが重複しないようにしてください。
  • 名前空間の第 2 レベルには、バージョンに依存しない、安定した製品名を使用してください。
  • 企業内のグループ名は変更されることが多いため、名前空間の階層構造での命名基準として組織の階層構造を使用することは避けてください

なるほど、名前空間に、企業内の部署名をつけてしまうのは悪手のようだ。

説明(2016 10月更新版)

更新されていたことに気づいたので追記。

https://msdn.microsoft.com/ja-jp/library/ms229026(v=vs.110).aspx

✓は守るべき内容、Xは避けるべき内容。 機械翻訳があれなので、意訳して掲載。

  • ✓ 異なる会社が名前空間を同じにすることを防ぐために、名前空間名に会社名を付けること。
  • 名前空間名の第2レベルでは、バージョンに依存しない安定した製品名を使用してください。
  • X 企業内のグループ名は有効期間が短い傾向があるため、名前空間の階層内の名前の基準として組織階層を使用しない。
    • 関連技術のグループの周囲の名前空間の階層で整理すると良い。
  • pascal 表記を使用し、名前空間をピリオドで区切る (例: Microsoft.Office.PowerPoint)。 ブランド名はこの限りではなく逸脱しても良い。
  • ✓ 適切な場所に複数系の名前空間名を使用することを検討してください。
    • 例えば、System.Collection の代わりに System.Collections を使用します。ただし、ブランド名や頭字語はこの規則の例外です。例えば、System.IOs ではなく System.IO を使用します。
  • X 名前空間とその名前空間の型に同じ名前を使用しないでください。
    • たとえば、名前空間名としてDebugとして、同じ名前空間にDebugという名前のクラスも指定しないようにする。コンパイラに対し、型を完全修飾する必要がでてきます。