C# 公共/私人成员/职能的顺序风格?

C# 公共/私人成员/职能的顺序风格?,c#,C#,对于类中的公共成员/函数还是私有成员/函数,是否有标准或公认的代码样式 我本想在谷歌上找到很多关于这方面的信息,但什么也没找到。有一些信息可以作为标准化的依据。有一些信息可以作为标准化的依据。不,这只是个人喜好的问题。如果适用的话,只需跟随公司的指示。不,这只是个人喜好的问题。如果适用的话,只需跟随公司的指示即可。看看这个。它具有用户的要求 相当好用的标准 旁白:C有a。当你知道自己做错了什么时,遵守规则就简单多了。它会告诉您是否违反了规则,并且可以设置为在构建步骤中运行。看看这个。它具有用户的

对于类中的公共成员/函数还是私有成员/函数,是否有标准或公认的代码样式


我本想在谷歌上找到很多关于这方面的信息,但什么也没找到。

有一些信息可以作为标准化的依据。

有一些信息可以作为标准化的依据。

不,这只是个人喜好的问题。如果适用的话,只需跟随公司的指示。

不,这只是个人喜好的问题。如果适用的话,只需跟随公司的指示即可。

看看这个。它具有用户的要求

相当好用的标准

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

看看这个。它具有用户的要求

相当好用的标准


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

我看到许多人将这些规则作为标准来执行

坦率地说,它们是有道理的,但我认为这不是最好的办法

我认为事情应该按功能分组,而不是按类型、可访问性或静态等。我认为,按功能组织的方案在尝试读取或维护代码库时需要最少的导航。任何其他排序方案或*规则都会让您在尝试使用时在整个类中导航。将有意义的事物放在一起的概念性排序将最小化这种跳跃。这是为了让它更容易理解和使用。这是一种实用的观点,而不是为了制定可以执行的规则而制定规则


1:它们是有道理的,因为它们是一条规则,它们对我们当中的强迫症有吸引力,它们可以通过机器来执行,但谁在乎机器是否可以执行它们呢?但代码不是为机器编写的,而是为人类编写的。当我需要理解代码时,我不认为我应该首先理解所有常量字段,然后是所有字段,等等。我采取了一种非常不同的方法。我想先了解全局,有一件事将有助于这一点,那就是查看按功能组织的代码。

我看到许多人将这些规则作为标准来使用

坦率地说,它们是有道理的,但我认为这不是最好的办法

我认为事情应该按功能分组,而不是按类型、可访问性或静态等。我认为,按功能组织的方案在尝试读取或维护代码库时需要最少的导航。任何其他排序方案或*规则都会让您在尝试使用时在整个类中导航。将有意义的事物放在一起的概念性排序将最小化这种跳跃。这是为了让它更容易理解和使用。这是一种实用的观点,而不是为了制定可以执行的规则而制定规则

1:它们是有道理的,因为它们是一条规则,它们对我们当中的强迫症有吸引力,它们可以通过机器来执行,但谁在乎机器是否可以执行它们呢?但代码不是为机器编写的,而是为人类编写的。当我需要理解代码时,我不认为我应该首先理解所有常量字段,然后是所有字段,等等。我采取了一种非常不同的方法。我想先了解全局,有一件事将有助于了解按功能组织的代码。

以下是

它没有提到类中公共、受保护或私有函数或成员的排序

我知道在我过去的经验中,FxCop曾建议我将公共功能放在私人功能之前,但也不一定是一个标准

它没有提到类中公共、受保护或私有函数或成员的排序


我知道,根据我过去的经验,FxCop曾建议我将公共职能放在私人职能之前,但也不一定是一个标准。

正如人们所说,顺序通常并不重要。然而,有一个重要的例外,那就是初始化静态字段。您可以根据其他静态字段的值初始化静态字段-最终都会编译到静态构造函数中,但顺序与代码中的编写顺序相同

例如:

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;
    private static int j;

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

正如人们所说的那样,秩序一般不会改变 没关系。然而,有一个重要的例外,那就是初始化静态字段。您可以根据其他静态字段的值初始化静态字段-最终都会编译到静态构造函数中,但顺序与代码中的编写顺序相同

例如:

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;
    private static int j;

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

没有一种风格或模式。这与代码无关,只与读者有关。@JohnSaunders这对我来说很有趣。我希望其中一个会紧跟着另一个,这样当你看到所有的公众或私人成员/活动时,你就会知道。嗯,这有什么关系?通常,IDE将帮助您导航。我想如果你使用记事本、emacs或vi进行开发会有所帮助。@John Saunders:首先,即使在这些工具中,也有一些方法可以快速导航,而不需要使用光标键或上下翻页键/命令。但第二,我认为,即使遇到一个没有强大导航功能的编辑器,最好的组织方案仍然是功能性的。几乎可以肯定,这是一种在尝试读取或维护代码库时需要最少移动量的方案。任何其他的计划都会让你大吃一惊。如果你不想表现得太主观,那就意味着你有一些数据来支持这一点。坦白地说,我用的是ReSharper,除非看行号,否则我永远不会注意到我是否在到处乱跳。没有一种风格或模式。这与代码无关,只与读者有关。@JohnSaunders这对我来说很有趣。我希望其中一个会紧跟着另一个,这样当你看到所有的公众或私人成员/活动时,你就会知道。嗯,这有什么关系?通常,IDE将帮助您导航。我想如果你使用记事本、emacs或vi进行开发会有所帮助。@John Saunders:首先,即使在这些工具中,也有一些方法可以快速导航,而不需要使用光标键或上下翻页键/命令。但第二,我认为,即使遇到一个没有强大导航功能的编辑器,最好的组织方案仍然是功能性的。几乎可以肯定,这是一种在尝试读取或维护代码库时需要最少移动量的方案。任何其他的计划都会让你大吃一惊。如果你不想表现得太主观,那就意味着你有一些数据来支持这一点。坦白地说,我使用的是ReSharper,除非看行号,否则我永远不会注意到我是否在到处乱跳。