我为不同的客户(Bob、Rick、Sue、Eve)开发了类似的计算包。计算包由几个计算模块(A、B、C、D、...)组成,它们以“责任链”模式组织。组装是用抽象工厂完成的。由于不同客户端的计算模块之间共享大量代码,因此它们按层次结构进行组织:
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
....
对于 Bob,我发布了 CommonCalc.dll、CalcMale.dll 和 CalcBob.dll。
现在这一切都很好,但是对于许多模块、辅助类等,在同一个模块层次结构中工作非常麻烦。密切相关的类(例如 ICalcA 和 CalcABob)在解决方案资源管理器中很远。我的团队中似乎没有人在不搜索班级名称的情况下找到任何东西——如果他能记住的话。功能往往会在错误或多个层次结构级别中实现。
我该如何改善这种情况?
我正在考虑为每个模块和层次结构级别创建一个项目(项目:CalcCommonA、CalcMaleA、CalcBobA、CalcRickA、CalcCommonB、CalcMaleB,...),并通过解决方案文件夹对它们进行分组。