如何组织项目中的接口/类/实现

时间:2011-09-29 07:22:56

标签: .net projects-and-solutions file-organization

我发现了一些关于如何组织项目的问题(命名空间,每个文件一个类等),但更具体的说明,你如何组织非常紧密相关的“事物”?

我通常最终得到:

  • 界面 IMyStuff
  • 为该界面提供基本骨架的基础(有时是抽象)类BaseMyStuff
  • 实施类 MyStuffWithBellsAndWhistlesMyStuffWithChocolateFlavours

似乎有意义的是它们应该在同一个命名空间中,但是如果我将所有这些文件放在同一个文件夹中(实际上并不是真正的问题,但感觉我的文件夹开始有点过于拥挤)感觉很奇怪。)

在同一个文件中定义接口和基类是否可以?

或者可以将这些内容分组到子文件夹中,但是在同一名称空间中吗?像这样:

-MyNamespace
 |-Interfaces
   | -IMyStuff
   | -IMyOtherStuff
 |-BaseClasses
   | -BaseMyStuff
   | -BaseMyOtherStuff
 |-Implementation
   | -MyStuffWithAwesomeBehaviour
   | -MyStuffWithGreatUsefulness
   | -MyOtherStuffSoNeatYouWillCry

有关此类组织的“最佳做法”是什么?

1 个答案:

答案 0 :(得分:0)

如果接口的目的是抽象实现并允许接口作者不知道的替代实现,那么我建议将它们保存在单独的项目文件中。在构建单元测试项目或接口的其他使用者时,这将允许他们创建仅拖入接口而不是实现的项目引用。这意味着具体类的替代实现永远不需要引用原始的concreate表示。