あなたがプロジェクトに取り組んでいる唯一の人なら、私は最初にあなたにとって意味のあることをします。直感的ではないと感じるディレクトリまたはプロジェクト構造を課すことほど悪いことはありません。BaseControllerクラスは\Core\フォルダーまたは\Controller\フォルダーにありますか?個人的にはコントローラーを調べますが、\Core\または\Basesにあるべきだと言う人もいます。
最初の初心者の罠は、コードを間違った方法で整理できると考えていることです。これは、プロジェクトの成功に何らかの形で反映されています。30個のファイルが1つのフォルダーにあるプロジェクトと、30個のファイルに対して20個のフォルダーがある他のプロジェクトを見てきました。
2番目の初心者の罠は、他の言語と比較して、すばらしいインテリセンス、コードナビゲーションツール、およびVisualStudioからのリファクタリングサポートの利点があることを忘れています。また、ファイルの置き忘れをはるかに簡単にするコンパイラもあります。「間違った」場所に何かを置いた場合、それは問題ありません。いつでもそれを見つけて、必要な場所にドラッグすることができます。
正直なところ、私は現在プロジェクトに取り組んでおり、特定のクラスがファイル構造のどこにあるのかさえわかりません。定義/宣言に移動は、私がよく使用するキーボードショートカットです。コードを操作しているのは私だけなので、これで問題ありません。プロジェクトに別の開発者を追加する必要がある場合は、おそらくクリーンアップします。
個人的には、実装タイプのインターフェイスを同じフォルダー内に配置する傾向があります。IPaymentGatewayは、AuthorizeNetGatewayおよびPaypalGatewayと同じフォルダーにあります。ソリューションエクスプローラーのサイドバーでそのフォルダー内のすべてのファイルを一度に表示できない場合は、すべてのゲートウェイファイルを\Gateway\フォルダーに移動します。
依存性注入がミックスに追加されているので、名前空間の爆発のみに関心があることをお勧めします。あなたができる最悪のことは、宣言とエイリアスを長く使ってブートストラッパーとファイルを乱雑にすることです。
ForRequestedType<Customer>
よりきれいです
using KevDog.Models
using Customer=KevDog.Models.Customer
また
ForRequestedType<KevDog.Models.Customer>
この問題を回避する別の方法は、名前を付けるときに明示的にすることです:Customer、CustomerViewModel、CustomerController、CustomerDataRow、CustomerView
TDDの場合、具体的なタイプを管理するには、ほとんど2つのブートストラッパーが必要です。ユニットテストでAuthorizeNetGateway:IPaymentGatewayを使用するのではなく、StubGateway:IPaymentGatewayを使用する必要があります。
今はDIも初めてなので、物事を非常にシンプルにし、101レベルのチュートリアルとドキュメントを反映する傾向があります。ビルド構成に基づいて動的インジェクションを開始する場合は、特定の状況でそれが必要であり、その理由が正確にわかっている場合にのみ使用してください。
私は通常、MVCアプリのデフォルトの構造も保持しています。すべてのチュートリアルとビデオの99%と同じ構造で、コードを作成する方が簡単です。
お役に立てれば。