0

我为不同的客户(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,...),并通过解决方案文件夹对它们进行分组。

4

1 回答 1

0

我刚刚发现解决方案资源管理器顶部的新搜索栏对此非常有用。

第 1 步:确保与 Feature A 相关的所有类的类名中都包含“FeatureA”。

第 2 步:如果在 FeatureA 层次结构中工作,请在搜索/过滤栏中输入“FeatureA”。

这将根据需要仅显示给该特定层次结构的类。

于 2013-03-29T11:39:46.260 回答