2009-09-07 155 views
10

我有一个名为Data的项目,它是一个数据层。在这个项目中,所有文件都只是位于顶层文件夹中。我有枚举,POCO,存储库,部分类,等等。C#项目文件夹命名约定

如果我想将这些文件移动到子文件夹中,每个文件夹的优先文件夹名称是什么?有没有约定?

“Repositories”文件夹非常明显,但我应该在哪里保持POCO和枚举?

谢谢

+2

虽然与您的问题没有直接关系,但您应该考虑将您的项目重命名为更有意义的项目,并且符合框架设计指南。现在就您的问题:FDG还提供了关于何时以及如何构造子命名空间的建议。 http://stackoverflow.com/questions/1389458/c-project-folder-naming-conventions/1389507#1389507 – 2009-09-07 13:59:52

回答

5

我倾向于使用项目文件夹作为分隔子命名空间的一种方式。所以在你的情况下,可能是一个名为Repositories的文件夹,它在Data.Repositories命名空间中有类。请注意,对于部分类,每个文件需要位于相同的名称空间中。

2

最好的处理办法是按对象模型的含义而不是按类型划分文件夹中的实体。

1

如果不是明确如何按照用法或对象模型含义对类进行分组,只需将它们全部放在一个文件夹中即可。如果不以有意义的方式组织类,使用子文件夹不会赋予值。

按类型划分文件夹,例如枚举,POCO,存储库,部分类等不太可能有用。

您可能希望将子文件夹用于不应编辑的生成代码。

还要记住,您可以在解决方案资源管理器中包含不属于该文件系统的文件夹。考虑到一些源代码控制系统在目录之间移动文件的成本(及时)成本,我会考虑直接使用msdev文件夹,直到你清楚你想要的结构。

没有需要把每个枚举在它自己的文件,如果枚举只有一个类中使用,它是有效的把它放在同一个文件中的类。例如PersonSex枚举可以放在person.cs文件中。同样如果你有很多小的密切相关的类,可以考虑把它们放在同一个文件中。

10

我(目前 - 基于项目的变化)倾向于使用这种方法命名组件/项目/命名空间时,在SaaS/Web样式项目)

  • 公司名称。
    • ProductName。
      • 数据。
      • 业务。 (参考数据)
      • 型号。 (POCO和接口 - 全部引用)
      • 服务。 (WCF服务层)
      • ServiceClient。 (由Web客户端引用)
      • Web。 (网络客户端业务层)
        • ViewModel。 (视图特定模型)
        • {面向客户的产品段} [商务部,CMS,CRM,报告等]

为了解释服务/服务客户端.. 。我使用IoC(当前的StructureMap),它允许我的WebClient直接与业务层通话,或者通过ServiceClient通过ServiceClient重定向到业务层。这使我可以灵活地将我的应用程序层部署到我的Web应用程序,或者通过WCF/SOA原理将我的业务层(应用程序层)部分分发到不同的服务器。