ソリューションを論理レイヤーに分割する場合、フォルダーごとにグループ化するだけでなく、別のプロジェクトを使用するのが最適なのはいつですか?
7 に答える
デフォルトでは、常に同じプロジェクト内に新しいフォルダーを作成するだけです
- 単一のアセンブリを取得します (追加の ILMerge 体操なし)
- 難読化が容易 (パブリックな型とメソッドが少なくなり、理想的にはまったくないため)
ソース コードを複数のプロジェクトに分割することは、次の場合にのみ意味があります。
- プロジェクトの一部であるが、デフォルトでデプロイできない、またはまったくデプロイできないソース コードの一部がある (単体テスト、追加のプラグインなど)。
- より多くの開発者が関与し、彼らの作業を消費可能なブラック ボックスとして扱いたい。(あまりお勧めしません)
- プロジェクトを分離されたレイヤー/モジュールに明確に分離でき、それらが内部メンバーを相互に消費できないようにしたい場合。(どちらの側面が最も重要かを判断する必要があるため、お勧めしません)
ソース コードの一部が再利用できると思われる場合でも、それを新しいプロジェクトとして作成しないでください。別のソリューションで本当に再利用したくなるまで待って、必要に応じて元のプロジェクトから分離してください。プログラミングはレゴではありません。通常、再利用は非常に難しく、計画どおりに行われないことがよくあります。
機能をプロジェクトに分離することは、多くの場合、YAGNI アーキテクチャの最適化です。これらの別々のプロジェクトをどれくらいの頻度で再利用しましたか? 頻繁に発生しない場合は、理論上の再利用のために開発、ビルド、デプロイ、およびメンテナンスを複雑にしています。
実際の再利用のユースケースがある場合は、(適切な名前空間を使用して) フォルダーに分割し、リファクタリングしてプロジェクトを分割することをお勧めします。
デニー 書きました:
個人的には、再利用可能なコードがプロジェクトに分割されている場合は、フォルダだけにある場合よりも別の場所を使用する方が簡単だと感じています。
私はこれに本当に同意します-再利用できる場合は、別のプロジェクトにする必要があります. そうは言っても、効果的に再利用することも非常に困難です:)
ここ SO では、3 つのプロジェクトで非常にシンプルにしようとしました。
- MVC Web プロジェクト (これは、デフォルトでレイヤーをフォルダーに分割する優れた仕事をします)
- DBのソース管理のためのデータベースプロジェクト
- MVC モデル/コントローラーに対する単体テスト
すべての人を代弁することはできませんが、私たちがどれだけシンプルに保たれているかに満足しています。ビルドが本当にスピードアップします!
私は通常、GUI のプロジェクト、ビジネス ロジックのプロジェクト、データ アクセスのプロジェクト、単体テストのプロジェクトを行います。
ただし、認証、販売などのサービス (サービス指向アーキテクチャを使用している場合) に基づいて分離することが賢明な場合もあります。
私が取り組んでいる経験則は、それを明確な関心事の分離を持つコンポーネントと見なすことができれば、別のプロジェクトが賢明であるということだと思います。しかし、フォルダーとプロジェクトは単なる好みまたは哲学である可能性があると思います。
個人的には、再利用可能なコードがプロジェクトに分割されている場合は、フォルダだけにある場合よりも別の場所を使用する方が簡単だと感じています。
プロジェクトも分割したほうがいいと思いますが、プロジェクトの規模や作業者の人数にもよります。
大規模なプロジェクトの場合、私は
- データアクセス(モデル)
- サービス
- フロントエンド
- テスト
私はRobConneryからモデルを入手し、彼のストアフロントアプリケーションは...本当にうまく機能しているようです。
ソース コードを複数のプロジェクトに分割することは、... ... より多くの開発者が関与し、彼らの作業を消費可能なブラック ボックスとして扱いたい場合にのみ意味があります。(あまりお勧めしません) ...
なぜこれが推奨されないのですか?複数の開発者がさまざまな部分に取り組んでいるアプリケーションを管理するのに非常に便利な方法であることがわかりました。主に実質的にマージを排除することにより、チェックインをはるかに簡単にします。2 人の開発者が同じプロジェクトに同時に取り組まなければならないことはめったにありません。
複数のプロジェクトを作成する場合は、ソリューションにコードを追加するすべての人がそれらの意図を完全に認識していることを確認し、プロジェクト間の依存関係を理解してもらうためにできる限りのことをしてください。誰かが行って、そこにあるはずのない参照を追加し、何週間もそれをやり過ごしたときに、混乱を整理しようとしたことがあるなら、この点を理解するでしょう。