私はさまざまなクライアント(Bob、Rick、Sue、Eve)向けに同様の計算パッケージを開発しています。計算パッケージは、「責任の連鎖」パターンで編成されたいくつかの計算モジュール(A、B、C、D、...)で構成されています。組み立てはAbstractfactoryで行われます。さまざまなクライアントの計算モジュール間で多くのコードが共有されるため、それらは階層に編成されます。
ICalcA
|
AbstrCalcA
| |
AbstrCalcAMale AbstrCalcAFemale
| | | |
CalcABob CalcARick CalcASue CalcAEve
(B、C、D、...の同じ階層)。
リリース管理では、継承レベルごとにソースコードを整理するように指示されています。
Project: CalcCommon
[CalcA]
ICalcA.cs
AbstrCalcA.cs
[CalcB]
ICalcB.cs
AbstrCalcB.cs
[CalcC]
...
Project: CalcMale
[CalcA]
AbstrCalcAMale.cs
[CalcB]
AbstrCalcBMale.cs
[CalcC]
....
Project: CalcBob
[CalcA]
CalcABob.cs
[CalcB]
CalcBBob.cs
[CalcC]
....
Project: CalcFemale
....
ボブの場合、CommonCalc.dll、CalcMale.dll、およびCalcBob.dllをリリースします。
これですべて問題ありませんが、多くのモジュールやヘルパークラスなどがあるため、同じモジュール階層内で作業するのは非常に面倒です。密接に関連するクラス(ICalcAやCalcABobなど)は、ソリューションエクスプローラーでは遠く離れています。私のチームの誰も、クラス名を検索せずに何かを見つけることはできないようです-彼がそれを覚えていれば。機能は、間違った階層レベルまたは複数の階層レベルで実装される傾向があります。
どうすれば状況を改善できますか?
モジュールおよび階層レベル(プロジェクト:CalcCommonA、CalcMaleA、CalcBobA、CalcRickA、CalcCommonB、CalcMaleBなど)ごとに1つのプロジェクトを作成し、ソリューションフォルダーを介してそれらをグループ化することを考えていました。