3

CRUD ビジネス アプリケーションのクラス ライブラリを作成しています。ビジネス オブジェクト (関連するデータ アクセス層オブジェクトを含む) の主な「カテゴリ」は次のとおりです。

  • メンテナンス (データベース内のマスター テーブル (マスター リスト) を操作するため)
  • インシデント (ほとんどのオブジェクトは実際のインシデントに関連しています)
  • 検索(明らか)

現在、私の名前空間は次のように設定されています。

  • BusinessObjects.Maintenance.Contacts
  • BusinessObjects.Maintenance.Products
  • BusinessObjects.Maintenance.Classifications
  • .
  • BusinessObjects.Incidents.Contacts
  • BusinessObjects.Incidents.Products
  • BusinessObjects.Incidents.Classifications
  • .
  • BusinessObjects.Search.Contacts
  • BusinessObjects.Search.Products
  • BusinessObjects.Search.Classifications
  • .
  • Dal.Maintenance.Contacts
  • Dal.Maintenance.Products
  • Dal.Maintenance.Classifications
  • .
  • Dal.Incidents.Contacts
  • Dal.Incidents.Products
  • Dal.Incidents.Classifications
  • .
  • Dal.Search.連絡先
  • Dal.Search.Products

すべてのクラスが同じ名前になることに注意してください。

これは良いフォームですか?

この名前空間の規則から発生する可能性のある問題はありますか? このコードを見ている/使用している他の人に混乱の可能性はありますか?

フォーム コードの欠点の 1 つは、すべてのオブジェクトを名前空間で修飾する必要があることです。私にとって、それは大したことではありません。それが言葉であれば、私は通常、少し明示的であることを好みます。

4

7 に答える 7

2

このプロジェクトは、少し短縮することで恩恵を受けると思います。過去にこのような問題に遭遇したとき、私は通常、名前空間として機能するいくつかの略語を説明するために少しのドキュメントを割きます。私は通常、これらの短縮名を 3 ~ 5 文字に制限しています。これにより、フォーム コードの一般的なコードが読みやすくなるだけでなく、名前が短いほど、他のコーダーからの混乱が少なくなることがわかりました。

それが役立つことを願っています。結局のところ、それは本当にあなたのチームの好みに依存します...

于 2009-02-25T19:54:30.080 に答える
1

名前空間の命名に関するガイドラインについては、この MSDN の記事も参照してください。

名前空間の名前: http://msdn.microsoft.com/en-us/library/ms229026.aspx

于 2011-01-07T08:47:55.243 に答える
1

名前空間の階層は、ネストされた一般化と呼ばれる条件に似ています。これは、複数の異なる方法で派生するクラスがある場合です。

次のようなクラス階層を想像してください。

class Vehicle 

class Car : Vehicle
class CarRed : Car 
class CarBlue : Car 

class Truck : Vehicle 
class TruckRed : Truck 
class TruckBlue : Truck

車両は乗用車またはトラックのいずれかであることに注意してください。また、車両は赤または青のいずれかです。これは完全にうまく機能しますが、新しい色や車両タイプを追加したい場合は、変更の負担が二次的に増加するため、問題があります。

この問題は、GOF デザイン パターン ブック (具体的には Bridge パターン) で説明されています。

名前空間に関する問題に具体的に対処しているわけではありませんが、状況は似ていると直感的に思います。これを避けることができるなら、そうするべきだと思います。

于 2009-02-25T22:40:18.733 に答える
0

ライブラリごとに 1 つの名前空間を使用し、実行可能なソース コード セットごとに 1 つの名前空間を使用します。名前は常に短いです。たとえば、現在取り組んでいる実行可能ファイルには、次のものがあります。

  • ALib - 私の一般的なユーティリティ ライブラリ
  • Mongo - 私のミニ Web サーバー ライブラリ
  • DBLite - 私の SQLite3 ラッパー & シンプルな永続レイヤー
  • Track1 - 実行可能 (実際には実行可能ファイルのカップル)

これはかなりうまくいくようです。非常に複雑で深いクラス階層が必要であるのと同じように、非常に複雑な名前空間スキームは避けるべきであることがわかりました。

于 2009-02-25T22:13:53.257 に答える