内部集体成员分组指南

时间:2009-06-04 17:42:03

标签: c# .net

如何在班级内对班级成员进行分组?向类中添加新方法时,是否应将其添加到按字母顺序排列的位置?

你使用地区吗?我将它们与Visual Studio的接口实现存根生成器创建的组一起使用,如:

#region IEnumerable

...

#endregion

我使用像“属性”等区域名称,但是有些成员被证明对分组/组织来说有点棘手。

你是如何处理的?

5 个答案:

答案 0 :(得分:5)

也许这是过于严格,但我认为如果你有这么多的班级成员,你担心如何将它们分组以保持可读性,你应该把你的班级分成更小的成员更少的班级。

除此之外,我只是运用常识;相互调用的类似方法或方法组合在一起,构造函数组合在一起,属性组合在一起,公共事物位于顶部,人们几乎不需要查看的内容位于底部。

答案 1 :(得分:3)

我个人遵循StyleCop提出的订购规则。它对你的方法/属性/事件/等的顺序非常严格。

我不一定认为它有“最佳”规则,但我仍然遵循它,主要是因为它是保证一致性的好工具。我希望我的代码始终保持一致,而不是总是符合我梦寐以求的理想 - 特别是因为我有多个程序员,而外部工具有助于在整个解决方案范围内实施规则。

答案 2 :(得分:1)

使用区域,按功能划分。这样,随着你的班级的增长,你可以看到各个地区开始增长,然后这些地区本身成为这个班级正在实施的职责范围的路标,以及重构的指导方针(即“嘿,我的'流程项'区域就像5个函数一样!也许我需要一个类来处理项目!“)。

答案 3 :(得分:1)

一般而言:

  • 构造函数(如果存在重载)
  • 静态方法
  • 方法
  • 属性
  • 活动
  • 可能将接口的实现(即IEnumerable<T>)分组,但绝对是显式接口实现
  • 嵌套类型

如果是ASP.NET:

  • 控件(名称映射到控件的字段)

如果我有一个有一些重载的方法,那么我为那些添加一个区域。或者,如果有一些方法相似但不一定是重载(例如,List<T>中的Find,FindAll,FindIndex等,那么它们将位于“查找”的一个区域中。)

关键在于,如果我想在课堂上找到某些东西而不是通过名字找到某些东西。实际上,区域提供了有关仅适合编辑的类成员的元数据。

这是我对组织的一般方法,我的地区也是如此。再次:总的来说。每个班级都不同(否则为什么要写呢?)所以YMWV:那里没有“可能”。

答案 4 :(得分:0)

添加新内容时,我不重新排序方法或属性,因为Visual Studio编辑器在对象选择下拉列表中对它们进行排序。我将源中的方法,属性和类变量组合在一起。在大班上我使用过地区,但对于大多数课程,我觉得不需要。

虽然Pete Brown没有提到地区,但他确实在site提供了一个有用的命名惯例列表。