C# 按访问修饰符对类文件中的方法进行排序

C# 按访问修饰符对类文件中的方法进行排序,c#,coding-style,C#,Coding Style,用访问修饰符对类文件中的方法排序是好习惯还是坏习惯 类文件结构的另一种方法是什么?编码标准最重要的一点是,它们被记录在案,为您的团队所熟知,并且应用一致 与整个行业采用的编码标准相比,如果它们不是太“离谱”,这也会有所帮助 在本例中,我目前所在的公司有一个类似的策略,即按特定顺序放置类,使用属性、构造函数、公共方法,然后是私有方法 我也曾在私有方法与使用它们的公共方法相近的地方工作过——但我必须承认,这往往会变得混乱,因为将逻辑提取到单独的方法中的整个想法都是为了得到重用。这是StyleCop使

用访问修饰符对类文件中的方法排序是好习惯还是坏习惯


类文件结构的另一种方法是什么?

编码标准最重要的一点是,它们被记录在案,为您的团队所熟知,并且应用一致

与整个行业采用的编码标准相比,如果它们不是太“离谱”,这也会有所帮助

在本例中,我目前所在的公司有一个类似的策略,即按特定顺序放置类,使用属性、构造函数、公共方法,然后是私有方法


我也曾在私有方法与使用它们的公共方法相近的地方工作过——但我必须承认,这往往会变得混乱,因为将逻辑提取到单独的方法中的整个想法都是为了得到重用。

这是StyleCop使用的排序顺序(如果我没记错的话):

  • 变量(所有常量和只读专用字段必须放在所有非常量、非只读专用字段之前)
  • 构造函数(静态优先)
  • 列举
  • 接口
  • 性质
  • 方法
  • 班级
  • 此外:

    • 静态成员应始终放置在具有相同可见性的实例成员之前
    • 成员的排序应为:public优先于internal优先于protected优先于private

    就我个人而言,我删除了静态成员应放在非静态成员之前的规则,因为这经常与良好的可读性相冲突,因为我喜欢像书一样阅读我的类,但也喜欢遵守FxCop(另一种工具)的规则这让我想到了不使用
    这个
    参数的实例方法。

    这个问题是主观的和有争议的…构造函数后面的属性对我来说最有意义,因为这也是对象初始化/执行的顺序。很好的调试思想。然后StyleCop有一个非常奇怪的命令,中间有接口,但是最后的类,我不能弄清楚这个排序的目的是什么。枚举、类和接口用于声明变量或字段的类型,而变量、构造函数、属性和方法以某种方式构成了类。StyleCop似乎把所有这些随机地混合在一起,然后将其定义为“风格”。@Chiccodoro:我错了。枚举必须放在构造函数之后,但在接口之前。课程仍在最后(我更新了答案以反映这一点)。我认为问题在于StyleCop试图将定义置于实现之上。枚举和接口是定义,类是实现。还要注意的是,在类中不太可能有任何公共枚举、接口和类(FxCop警告您这一点)。