C# 在哪里存储类文件?

C# 在哪里存储类文件?,c#,conventions,C#,Conventions,我通常为我的项目创建一个单独的类库,然后将其分解成文件夹 Services -all my .cs files that are service(business logic) Data - Mapping - nhibernate mapping files Domain - domain files 我还创建了其他文件夹,比如我正在用foursquare做一些事情,因此所有类文件都位于名为“foursquare” 但是我不知道把一次性文件放在哪里。例如,我有一个“Htm

我通常为我的项目创建一个单独的类库,然后将其分解成文件夹

Services
 -all my .cs files that are service(business logic)

Data
 - Mapping 
   - nhibernate mapping files

Domain
  - domain files
我还创建了其他文件夹,比如我正在用foursquare做一些事情,因此所有
类文件
都位于名为
“foursquare”

但是我不知道把
一次性文件放在哪里。例如,我有一个
“HtmlWhiteList”类
什么是唯一的白名单

我不认为它应该有自己的文件夹,因为它只是一个文件,但同时我不喜欢只把它放在根目录中


有什么建议可以把不应该拥有自己文件夹的类文件放在哪里吗?

我会把它和调用它的代码类放在一起。否则只给它自己的文件夹,不能保证它永远是唯一属于它的类。不过,我认为这更像是一个意见问题,而不是一个有具体答案的问题

有时我会创建一个“实用工具”文件夹来存放其他东西。通常情况下,一旦它们有了其他类似的类,它们就会迁移到其他地方。。。但有时他们会呆在那里。当然,这是非常主观的个人偏好。

作为一般经验法则,我将新类文件放在调用它的另一个类的根中。如果我得到5个或更多类似的类,我将创建一个文件夹,并将它们放在同一级别的文件夹中。

我们不再使用这种结构。它最终拥有“枚举”、“接口”、“实体”等文件夹。当您为一个功能编写代码时,比如说功能“orders”,您需要所有的名称空间来获得所需的类型,因为与订单相关的类分布在各地。因此,我们改为一个面向特性的结构,其中包含诸如“orders”、“articles”、“users”等名称空间

以下是一个建议:

(|)[.]

HtmlWhiteList
属于哪个功能?为了安全?到客户端会话?我不能告诉你,因为我不知道它是什么。

如果你不知道它做什么或谁使用它,因此你不知道把它放在哪里,或者它做的事情很琐碎,不值得放在那里,那么就把它完全移除

如果你不认为它被视为被移除,那么它应该得到一个位置

如果它很少使用,那么你应该确切地知道谁在使用它,它对他们有什么影响-然后你应该立即知道把它放在哪里:在他们附近的某个地方

如果没有这样的地方,那就去创造它,与它一起生活。随着项目的发展,当一个更好的地方成为现实时,你总是可以把它搬到那里。看看您的项目结构,若它是真正的实用程序,那个么服务不是用于“业务逻辑”,而是用于服务和实用程序。如果你将你的BL建模为“服务”,那么这是你的选择,但这并不意味着所有的服务都是BL


如果此类用户太多,以至于您无法决定谁更重要或更相关,那么请将其创建为一个新的模块/库/文件夹,因为它被大量使用,而且事实上很重要。

白名单是否有特殊用途?是的。。我甚至看到过一个设置,其中包含项目“xxx.yyy.Enums”和“xxx.yyy.Data”,其中只包含来自整个项目的枚举和数据结构。然后是一个项目命令,另一个视图模型,等等。然后主项目引用了它们并将应用程序粘在一起。另一方面,在这些项目中,有一个非常干净、逻辑性很强的模块和功能强大的文件夹结构。。我对此有着复杂的感觉。名称空间的结构应该使类(例如服务)的普通用户所需的尽可能少(减少“使用”),并且只看到感兴趣的类。这是名称空间的唯一相关标准。面向特性的名称空间非常好,所以很容易理解。。我说的是项目/程序集及其内部源代码目录结构。我没有提到名称空间;)无论如何,我只是想确认您遇到的“枚举”“接口”问题。“百感交集”的原因在于团队能够流利地使用它,并且项目内部结构干净,因此它有一些好的一面。即使如此,我也不推荐这样的“枚举”“接口”设置。遗憾的是,许多可用的项目模板生成并发布类似(不精确)的布局,即Prism的模块模板。我认为项目结构应该始终反映名称空间。没有银弹。如果名称空间适用于某个项目,则无需对其进行更改。在我们的项目中,名称空间结构成为了一个真正的维护问题。
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]