在类结构方面,是否有一个官方的c#项目顺序指南?

它是这样的:

公共字段 私有字段 属性 构造函数 方法 ?

我很好奇物品的摆放顺序是否有硬性规定?我有点到处都是。我想坚持一个特定的标准,这样我就可以在任何地方使用它。

真正的问题是我的更复杂的属性最终看起来很像方法,它们在构造函数之前的顶部感觉不合适。

任何建议/建议吗?


当前回答

我更喜欢将私有字段与构造函数一起放在顶部,然后将公共接口位放在后面,然后是私有接口位。

此外,如果您的类定义足够长,以至于项的顺序变得很重要,这可能是一种代码气味,表明您的类太庞大和复杂,您应该重构。

其他回答

不是按可见性或按项目类型(字段、属性、方法等)分组,而是按功能分组呢?

正如前面提到的,c#语言中没有规定布局的东西,我个人使用区域,我对一个普通类也这样做。

public class myClass
{
#region Private Members

#endregion
#region Public Properties

#endregion

#region Constructors

#endregion
#region Public Methods

#endregion
}

反正对我来说是有道理的

我已经重新构造了公认的答案,至于我认为是一个更好的布局:

在类、结构或接口中:

常数字段 只读的字段 字段 事件 属性 索引器 构造函数 终结器(析构函数) 接口(接口实现) 方法 类 结构体 枚举 代表

在这些组中,按访问顺序排列:

公共 内部 保护内部 受保护的 私人

在每个访问组中,按静态顺序,然后是非静态的:

静态 非静态

我还认为应该尽量减少嵌套类型。我经常看到人们有嵌套的类,枚举,委托,它们最好是一个单独的实例。使类型嵌套几乎没有任何好处。也要把它们放在单独的文件中。一个包含5个类的文件对我来说很混乱。

这是一个古老但仍然非常相关的问题,所以我要补充一点:当您打开一个以前可能读过也可能没有读过的类文件时,您首先要查找的是什么?字段?属性呢?我从经验中意识到,我几乎总是去寻找构造函数,因为最基本的事情是理解这个对象是如何构造的。

因此,我开始在类文件中把构造函数放在前面,结果在心理上是非常积极的。将构造函数放在一堆其他东西后面的标准建议让人感觉不协调。

c# 6中即将出现的主构造函数特性提供了证据,证明构造函数的自然位置是在类的顶部——事实上,主构造函数甚至在开大括号之前就被指定了。

有趣的是,这样的重新排序会产生多大的不同。这让我想起了using语句过去是如何排序的——首先是System名称空间。Visual Studio的“Organize Usings”命令使用了这个顺序。现在使用只是按字母顺序排序,没有对系统名称空间进行特殊处理。结果就是感觉更简单、更干净。

我更喜欢将私有字段与构造函数一起放在顶部,然后将公共接口位放在后面,然后是私有接口位。

此外,如果您的类定义足够长,以至于项的顺序变得很重要,这可能是一种代码气味,表明您的类太庞大和复杂,您应该重构。