公共/私人会员/职能风格的顺序?

时间:2013-07-09 17:09:46

标签: c#

对于公共或私人成员/职能是否在班级中排在第一位,是否存在标准或可接受的代码风格?

我希望在谷歌上找到很多相关内容但却一无所获。

6 个答案:

答案 0 :(得分:3)

看看这个SO question。它有StyleCop Rules Documentation的要求。

相当好用的标准。

ASIDE :C#有free plugin。当你知道自己做错了什么时,遵守规则要简单得多。它会告诉您是否违反规则并且可以设置为在构建步骤中运行。

答案 1 :(得分:2)

ordering rules StyleCop {{3}}对于标准化非常有用。

答案 2 :(得分:1)

这不仅仅是个人喜好的问题。如果适用,请跟随您的公司。

答案 3 :(得分:1)

StyleCop强制执行的规则我见过许多人用作标准。

坦率地说,他们理解 1 ,但我不认为这是最好的方式

我认为事情应该按功能分组,而不是按类型,可访问性或static等分组。我认为按功能组织的方案在尝试阅读时需要的导航量最少或者维护代码库。当您尝试使用它时,任何其他订购方案(或*规则)都会让您在整个班级中导航。将事物放在一起有意义的概念性排序将最大限度地减少跳跃。这是为了让它更容易理解和使用它。这是一个实用的观点,而不是为了制定可以执行的规则而形成规则。

1 :他们有道理,他们是一个规则,他们吸引我们之间的强迫症,他们可以通过机器强制执行,但谁在乎呢机器可以强制执行吗?但代码不适用于机器,而是适用于人类。当我需要理解代码时,我不认为“只要我能先了解所有常数字段,然后是所有字段等等”。我采取了一种非常不同的方法。我希望首先看到大局,有一点可以帮助我看到代码按功能组织

答案 4 :(得分:1)

正如人们所说,订单通常无关紧要。但是,有一个重要的例外,那就是初始化静态字段。您可以根据其他静态字段的值初始化静态字段 - 它最终都会被编译到静态构造函数中,但是按照它在代码中编写的顺序。

例如:

class Program {
    private static int j = 4;
    private static int i = Program.j;

    static void Main(string[] args) {
        Console.WriteLine(Program.i); // 4
    }
}

可是:

class Program {
    private static int i = Program.j;
    private static int j = 4;

    static void Main(string[] args) {
        Console.WriteLine(Program.i); // 0
    }
}

如果你决定重新洗牌你的成员,请记住这个案例。为了完全安全,您可以将初始化放在静态构造函数中,例如:

class Program {
    private static int i;
    private static int j;

    static Program() {
        Program.j = 4;
        Program.i = Program.j;
    }
}

答案 5 :(得分:0)

以下是Microsoft C# Coding Conventions (C# Programming Guide)

它没有提及publicprotectedprivate函数或类中成员的排序。

我在过去的经历中知道FxCop已“建议”我将公共职能放在我的私人职能之前,但不一定是标准。