繁体   English   中英

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

[英]c# multiple classes in separate files?

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

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

谢谢。

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

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

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

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

我会给该文件以下名称.cs

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

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

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

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

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

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

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

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

  1. 将一个类(或一个接口,枚举或结构)放在一个文件中。
  2. 类的名称应该是文件的名称。
  3. 从同一基类继承的类应位于同一文件夹中。
  4. 如果可能的话,类应该与该类实现的接口位于同一文件夹中。
  5. 接口应与类具有相同的名称,但应使用大写的“I”作为前缀。 这是我仍然尊重匈牙利人的唯一编码建议。
  6. 文件夹名称应该是基类的复数版本。 例如,如果我们要创建一堆Engines ,则Engine应该是基类名, Engines应该是文件夹名,并且从Engine继承的所有类都应该在Engines文件夹中。
  7. 命名空间结构应直接遵循文件夹结构。 因此,应将一组给定Engines的命名空间(上面的示例)放入名为Engines的命名空间中。 如果Engines是子文件夹的子文件夹,则每个子文件夹应该是其自己的子命名空间,例如Project1.Subfolder1.Subfolder2.Engines
  8. 当您处理需要存在于两个单独文件夹中的部分类时(因为该类的一部分是自动生成的),请将非自动生成的类放入以Extensions为后缀的文件夹中。 在文件中,注释掉Extensions命名空间,如下所示: namespace FatDish.Engines//.EngineExtensions { ...

当涉及到导航性时,第一和第二规则是关键,因为它们直接帮助向“旅游开发者”指示任何给定的代码片段所在的位置。

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

希望这可以帮助!

我个人坚持单一责任原则,我的每个班级都有一个行为

想想有一个电子商务网站

  • 用户注册
  • 用户登录
  • 计费
  • 供应商订购

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM