如何组织C#类

时间:2010-08-05 20:07:13

标签: c#

关于如何在C#中组织类,是否有一般的做法?每个.cs文件只应该有一个泛型类吗?我看到我有Form1.cs,其中包含与“Form1”相关的所有类。但是我可以创建一个名为Misc.cs的文件,其中包含所有misc类。不知道要走哪条路,所以一切都井井有条。

或者我应该以特定的方式组织它们?例如,我正在访问一个MySQL数据库,所以我正在创建一个MySQL包装器,我将它存储在MysqlWrapper.cs中并命名该类以匹配它。我应该为我创建的每个类创建一个新的.cs吗?

或者我应该只使用类似“使用”命名空间的那些,例如System.Text; 使用System.Windows.Forms;等?

10 个答案:

答案 0 :(得分:16)

编辑 - 此答案旨在补充其他人已发布的好答案。

其他人似乎都在回答具体问题。我在想你会有更多的“最佳实践”设计问题。

官方指南可在此处找到:http://msdn.microsoft.com/en-us/library/czefa0ke(VS.71).aspx

特别是,深入了解命名准则,然后进入命名空间命名准则和类命名准则。

而且,正如其他人提到的那样,请每个文件一个班级。它会让那些跟随你的可怜维护开发人员更轻松。

答案 1 :(得分:13)

通常,我为每个类创建一个单独的.cs文件。另外,我组织文件以匹配类名称空间。

随着项目变得更大,这简化了组织,因为您总是知道在项目中找到类的位置。随着越来越多的人正在研究解决方案,这变得更加重要。每个文件一个类也可能是有益的,因为文件夹结构让您了解命名空间的复杂性,这有助于我意识到何时需要拆分命名空间,因为它们太复杂了。


  

我看到我有Form1.cs,其中包含与“Form1”相关的所有类。

我建议不要以这种方式组织,而是将它们分成不同的文件。如果你有很多与特定操作相关的类(由Form1执行或通过Form1访问),我会考虑将它们放入自己的命名空间中。我还强烈建议将“Form1”重命名为更有意义的内容,例如“EmployeeForm”。这将使您更容易理解和维护您的代码。

答案 2 :(得分:4)

通常接受每个文件一个类。有些类使用“partial”关键字分布在多个文件中。我的文件夹结构与命名空间结构松散匹配。

答案 3 :(得分:2)

我可能会因为这样说而被鞭打,但至少在Visual Studio中,它可能不像过去那样重要。

我的大多数文件每个只有一个类,但对于像普通枚举和仅由其他一个类使用的简单存储类这样的东西,我只是将它们放在与主类相同的文件中。否则,如果我想在其他地方使用同一个类,我会移动多个文件并试图猜测我需要哪些。

您可以右键单击标识符并单击“转到定义”以导航到它,您可以按ctrl +逗号进行搜索,也可以使用“类视图”。

我将相关的.cs文件分组到文件夹中 - 这种更大的图片似乎更重要。我还确保文件夹名称始终与命名空间匹配,即我保留Visual Studio在文件夹中创建新类文件时提供的默认命名空间。

答案 4 :(得分:1)

我没有严格遵循每个文件一级的规则。如果我正在处理一个包含大量代码的非常大的类,我可能会给它自己的文件。但是,一般情况下,只要它们以逻辑方式相互关联,我就不会在同一个文件中保留多个类。这对于小班级来说效果最好,但对于大班级来说可能不是最好的想法。

答案 5 :(得分:1)

作为一般规则,如果每个文件有一种类型,则代码更易于维护(对其他人来说更容易阅读)。 (类/结构/枚举)。

但是,对于部分类,我有时会根据主要的功能部分将大类分成多个文件。如果一个类有私有嵌套类型,我几乎总是将这些嵌套类型放在不同的文件中。

答案 6 :(得分:1)

我通常每个文件都有一个类。唯一的例外是,如果一个类有一个私有嵌套类,我通常将它保存在同一个文件中,而不是使用partial关键字将其拆分为另一个。 这样我就能找到更容易找到的东西。

答案 7 :(得分:0)

您需要的一些原则:

可维护性:应该很容易使项目保持最新并修复错误。问题:找到给定的课程/功能需要多长时间?如果有错误,是否可能会出现程序员(谁不一定是作家)会看到的?

复杂性:应该清楚程序的功能。有时拆分它有帮助。有时保持在一起有助于。问题:有人在看到它时会感到困惑吗?他们会想知道所有部件是什么吗?

这真的只是常识。此外,请注意某些IDE工具将允许您将事物处于混乱状态,并仍然能够找到东西(例如参考查找器)。你必须决定什么程度的混乱可以接受,什么时候重构。

答案 8 :(得分:0)

您不应该在文件中组合使用类似“using”命名空间的类,因为如果您必须更改类的实现,则必须将类移动到其他文件。

我为每个类保留一个文件,因为它对源代码控制系统非常有用。此外,我尽量避免部分课程。如果一个班级太大,那么设计就会出现问题。

答案 9 :(得分:0)

我有时也会将类似的类文件合并到VS中的一个分支中。

例如 - 如果您有3个文件: Message.xaml, Message.xaml.cs, MessageButton.cs, MessageImage.cs, MessageResult.cs。

Message.xaml.cs已经显示在第一个文件的层次结构中。您也可以使用记事本编辑项目文件来添加其他文件。您只需要添加

   <DependentUpon> </DependentUpon>

标记需要的位置。

我不知道VS是否有任何扩展可以更容易地做到这一点。

这是一回事。虽然这可以帮助您在项目中组织文件,但只需在VS中单击两次文件名,就无法重命名您的类。