在类结构方面,是否有一个官方的c#项目顺序指南?
它是这样的:
公共字段 私有字段 属性 构造函数 方法 ?
我很好奇物品的摆放顺序是否有硬性规定?我有点到处都是。我想坚持一个特定的标准,这样我就可以在任何地方使用它。
真正的问题是我的更复杂的属性最终看起来很像方法,它们在构造函数之前的顶部感觉不合适。
任何建议/建议吗?
在类结构方面,是否有一个官方的c#项目顺序指南?
它是这样的:
公共字段 私有字段 属性 构造函数 方法 ?
我很好奇物品的摆放顺序是否有硬性规定?我有点到处都是。我想坚持一个特定的标准,这样我就可以在任何地方使用它。
真正的问题是我的更复杂的属性最终看起来很像方法,它们在构造函数之前的顶部感觉不合适。
任何建议/建议吗?
当前回答
通常我会遵循下面的模式:
静态成员(通常有其他上下文,必须是线程安全的,等等) 实例成员
每个部分(静态和实例)由以下成员类型组成:
运算符(总是静态的) 字段(在构造函数之前初始化) 构造函数 析构函数(是遵循构造函数的传统) 属性 方法 事件
然后成员按可见性排序(从低到高):
私人 内部 内部保护 受保护的 公共
顺序不是教条:简单的类更容易阅读,然而,更复杂的类需要特定于上下文的分组。
其他回答
正如前面提到的,c#语言中没有规定布局的东西,我个人使用区域,我对一个普通类也这样做。
public class myClass
{
#region Private Members
#endregion
#region Public Properties
#endregion
#region Constructors
#endregion
#region Public Methods
#endregion
}
反正对我来说是有道理的
根据StyleCop规则文档,排序如下。
在类、结构或接口中:(SA1201和SA1203)
常数字段 字段 构造函数 终结器(析构函数) 代表 事件 枚举 接口(接口实现) 属性 索引器 方法 结构体 类
在这些组中,按访问顺序排序:(SA1202)
公共 内部 保护内部 受保护的 私人
在每个访问组中,依次按静态、非静态排序:(SA1204)
静态 非静态
在每个静态/非静态字段组中,按只读、非只读顺序排列:(SA1214和SA1215)
只读的 non-readonly
展开的列表有130行长,所以这里就不展开了。展开的方法部分为:
公共静态方法 公共方法 内部静态方法 内部方法 受保护的内部静态方法 受保护的内部方法 受保护的静态方法 受保护的方法 私有静态方法 私有方法
文档指出,如果规定的顺序不合适——比如,正在实现多个接口,并且接口方法和属性应该分组在一起——那么使用分部类将相关的方法和属性分组在一起。
我所看到的唯一编码指南是将字段放在类定义的顶部。
我倾向于把构造函数放在后面。
我的一般意见是,你应该坚持每个文件一个类,如果类足够大,属性和方法的组织是一个大问题,类有多大,你应该重构它吗?它是否代表多个关注点?
我不知道哪种语言或行业标准,但我倾向于按照这样的顺序排列,每个部分都用#区域包装:
使用报表
名称空间
类
私有成员
公共属性
构造函数
公共方法
私有方法
通常我会遵循下面的模式:
静态成员(通常有其他上下文,必须是线程安全的,等等) 实例成员
每个部分(静态和实例)由以下成员类型组成:
运算符(总是静态的) 字段(在构造函数之前初始化) 构造函数 析构函数(是遵循构造函数的传统) 属性 方法 事件
然后成员按可见性排序(从低到高):
私人 内部 内部保护 受保护的 公共
顺序不是教条:简单的类更容易阅读,然而,更复杂的类需要特定于上下文的分组。