c#单独文件中的多个类?

时间:2011-01-20 10:26:49

标签: c# class

我只是想知道其他人对单个或单独的.cs文件中相关类的想法是什么?

例如,如果我有一个由任意10个其他类实现的接口,你会将它们全部放在同一个文件中还是将它们分开?

感谢。

7 个答案:

答案 0 :(得分:5)

我总是为每个班级分别使用单独的文件。这是推荐的最佳实践,它确实很有意义。

答案 1 :(得分:2)

我的方法是1个文件== 1个class / interface / module / ...无论如何。 所以文件名总是反映出那里的内容。对我而言,这是最干净的方法。

答案 2 :(得分:1)

我会将类分成不同的文件。这使得它们在IDE中更容易找到。

答案 3 :(得分:1)

我会将每个类放在一个单独的文件中,并将接口放在一个单独的文件中。

我会给文件命名为.cs

这是推荐的最佳做法;它可以让你快速找到你的课程。我总是采用这种方法(除非我有内部课程。:))。

答案 4 :(得分:1)

我必须同意其余部分:1 class = 1 file。

还要为正确的项目名称和文件夹使用正确的命名空间。接口也进入单独的文件,但我通常将枚举和结构保存在其他类中。

文件夹可用于将某些类组合在一起。然而,当你“没有名字”时可能会出现一个小问题。

例:
解决方案:Tedd.CoolApp
项目:Tedd.CoolApp.Engine
现在我怎么命名这堂课?我想将其命名为Engine,但这会给我Tedd.CoolApp.Engine.Engine ... :)

答案 5 :(得分:1)

计算机可能不太关心你编写的文件夹结构,所以这个问题肯定属于代码可读性的范畴。正如this post about standards of code readability中所述,友好命名一致性逻辑代码分离是创建可读代码的基础。

那么,我们离开了哪里?文件的创建 - 以及命名空间和文件区域的创建 - 应该是一致的。这些名字应该是可以理解的。并且每个聚合类别中的代码应该有一些共同点,应该在类别名称中详细说明。最后,在可读性的情况下,您正在考虑您的代码可能会被另一个可怜的家伙继承,并且您创建的命名标准可能会帮助那个可怜的家伙(“旅游开发者”,如果您愿意)更轻松地导航在疯狂中。

这是很多话题,所以让我来谈谈。这些是我的规则,但我认为它们可能对那些想要清理自己的代码水族箱的人有所帮助:

  1. 放置一个类(或一个接口,枚举或结构) 在一个文件中。
  2. 班级的名称应该是 文件名。
  3. 从同一基类继承的类应位于同一文件夹中。
  4. 如果可能的话,类应该与该类实现的接口位于同一文件夹中。
  5. 接口应与类名相同,但应使用大写的“I”作为前缀。这是我仍然尊重Hungarians
  6. 的唯一编码建议
  7. 文件夹名称应为基类的复数版本。例如,如果我们要创建一堆引擎引擎应该是基类名称,引擎应该是文件夹名称,并且从引擎继承的所有类都应位于引擎文件夹中。
  8. 命名空间结构应直接遵循文件夹结构。因此,应将一组给定引擎(上面的示例)的命名空间放入名为引擎的命名空间中。如果Engines是子文件夹的子文件夹,则每个子文件夹应该是其自己的子命名空间,例如的 Project1.Subfolder1.Subfolder2.Engines 即可。
  9. 当您处理需要存在于两个单独文件夹中的部分类时(因为该类的一个部分是自动生成的),请将非自动生成的类放入后缀为 Extensions 的文件夹中。在该文件中,注释掉Extensions名称空间,如下所示:namespace FatDish.Engines//.EngineExtensions { ...
  10. 在可导航性方面,第一和第二规则是关键,因为它们直接帮助向“旅游开发者”指示任何给定代码所在的位置。

    这就是我现在所能想到的。更重要的是,你的约定与你采用任何特定形式的惯例一致。这将有助于其他开发人员更快地理解和使用您的代码,并确保项目的未来发展(由您自己以外的人编写)保持在您已建立的相同的传统,连贯的范围内。

    希望这有帮助!

答案 6 :(得分:-2)

就个人而言,我遵守单一责任原则,其中我的每个班级都有一个行为

想到一个有

的电子商务网站
  • 用户注册
  • 用户登录
  • 计费
  • 供应商订购

我会将这些分类为User类,Billing Class和Orders类 - 然后同样遵循接口驱动的方法 - 每个责任的1个接口

查看SOLID设计原则 - 每个类都将拥有自己的文件,并有一个合适的命名约定来帮助