2011-09-29 25 views
5

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

  • 一个接口IMyStuff
  • 一个碱(有时抽象)类,该接口提供基本skeletton:BaseMyStuff
  • 实现类MyStuffWithBellsAndWhistles

    我通常与最终,MyStuffWithChocolateFlavours

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

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

将这些东西分组在子文件夹中,但在相同的命名空间?像这样:

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

什么是“最佳实践”对于这种组织的?

+0

这是我用来组织自己的一瞥:http://i.stack.imgur.com/M9Rh8.png – balexandre

回答

0

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