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

它是这样的:

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

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

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

任何建议/建议吗?


当前回答

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

在类、结构或接口中:

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

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

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

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

静态 非静态

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

其他回答

我建议使用IDesign的编码标准或Brad Abram网站上列出的编码标准。这是我找到的最好的两个。

布拉德会说……

类成员应该按字母顺序排列,并分组到部分(字段,构造函数,属性,事件,方法,私有接口实现,嵌套类型)

最接近的可能是Brad Abrams的《设计指南、托管代码和。net框架》(http://blogs.msdn.com/brada/articles/361363.aspx)

这里概述了许多标准。我认为相关的章节是2.8。

根据StyleCop规则文档,排序如下。

在类、结构或接口中:(SA1201和SA1203)

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

在这些组中,按访问顺序排序:(SA1202)

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

在每个访问组中,依次按静态、非静态排序:(SA1204)

静态 非静态

在每个静态/非静态字段组中,按只读、非只读顺序排列:(SA1214和SA1215)

只读的 non-readonly

展开的列表有130行长,所以这里就不展开了。展开的方法部分为:

公共静态方法 公共方法 内部静态方法 内部方法 受保护的内部静态方法 受保护的内部方法 受保护的静态方法 受保护的方法 私有静态方法 私有方法

文档指出,如果规定的顺序不合适——比如,正在实现多个接口,并且接口方法和属性应该分组在一起——那么使用分部类将相关的方法和属性分组在一起。

从StyleCop

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

由于StyleCop是MS构建过程的一部分,您可以将其视为事实上的标准

我所看到的唯一编码指南是将字段放在类定义的顶部。

我倾向于把构造函数放在后面。

我的一般意见是,你应该坚持每个文件一个类,如果类足够大,属性和方法的组织是一个大问题,类有多大,你应该重构它吗?它是否代表多个关注点?