1

問題:

asp.net mvc アプリの場合、ドメイン フォルダーを無視し、ドメイン モデルを別のライブラリ プロジェクトに記述します。

このようなライブラリ プロジェクトを使用する Visual Studio は、フォルダーごとに名前空間を作成します。たとえば、私のライブラリ プロジェクトが呼び出された場合:

ES.eLearning.ドメイン

Services というフォルダーがあり、Services フォルダー内のすべてのクラスの名前空間が次のように自動化されます。

ES.eLearning.Domain.Services

それはすべてうまくいっていますが、やり過ぎだと思います。私のプロジェクトは比較的単純なので、クラス名が衝突する可能性はありません。あったとしても、コンパイラはそれを拾います。

したがって、名前空間名をプロジェクト名に手動で編集するだけです。

ES.eLearning.ドメイン

そうすれば、フロント エンドを開発するとき、ドメイン モデル プロジェクトは、ドメイン モデルを提供するブラック ボックスにすぎません。また、名前空間を 1 つの機能ブロックとして扱うのではなく、名前空間の名前をプロジェクトのフォルダー構造に結合する意味がわかりません。

したがって、次の 2 つの疑問が生じます。

  1. これは悪い習慣ですか?もしそうなら、なぜですか?覚えておいてください: これらは小規模から中規模のプロジェクトです。

  2. 名前空間に名前を付ける方法を VS 2010 に伝える方法はありますか?

ありがとう

注: プロジェクトの命名では、ES はクライアント、eLearning はアプリ、ドメインはコンポーネントです。

PS:SOで見つけた名前空間の命名規則に関する他の質問は、さまざまな問題に対処しています。したがって、私が判断できる限り、重複していません。

4

4 に答える 4

1

特定の環境に適した命名規則を使用するように IDE を誘導することは、良い方法です。プロジェクト プロパティの [アプリケーション] タブにある既定の名前空間ボックスを使用して、VS が自動的にクラス ファイルに挿入する名前空間を変更できます。

于 2011-01-12T16:16:09.527 に答える
1

特定のフォルダーがその内容でフォルダー名を名前空間の一部として使用することを強制しないようにするには、フォルダーを右クリックし、[プロパティ] を選択してから、[名前空間プロバイダー] を に変更しFalseます。ただし、それが適用されるすべてのフォルダーに対してこれを行う必要があるため、それが本当にあなたの質問に完全に答えているかどうかはわかりません.

編集: ReSharperがこの機能を追加しているようです。

于 2011-01-13T08:38:06.367 に答える
0

名前空間、フォルダー、およびクラスに名前を付けるときに単数形の末尾を使用することをお勧めします。例えば

namespace ES.eLearning.Domain.Services

として好ましいだろう

ES.eLearning.Domain.Service // <-- note missing "s"

ソースコードでの別の使用例:

ES.eLearning.Domain.Constants.FileTypes.Text

として理解するのが「より良い」かもしれません

ES.eLearning.Domain.Constant.FileType.Text

すべて個人の好みであり、ルールではありません。コード (名前空間) を短くすると同時に読みやすくする小さなことです。

PS。一方、ASP.NET MVC は次の「規則」に従いません。

Content
Controllers
Models
Scripts
Views

とにかく、ソースコードでそれらを「名前変更」し続けるものは何もありません。

于 2011-02-11T12:34:02.627 に答える
0

VS2010でこれを無効にするように構成できるかどうかはわかりません..しかし、私はそうしません。

コード ファイルがドメイン フォルダーに配置されている場合、その名前空間は Company.Domain である必要があります。ドメインにサブ フォルダー Services がある場合、名前空間は Company.Domain.Services である必要があります。それは良いことです(そして何が重要なのか-一般的な慣習です)。

規則に違反するよりも、規則に固執する方がよい :)

于 2011-01-12T16:37:57.677 に答える