2013-07-09 37 views
1

是否有公共或私人成员/功能在班级中排在第一位的标准或可接受的代码风格?公共/私人成员/功能风格的顺序?

我希望能够找到很多关于谷歌对此但都一无所获。

+1

没有任何样式或模式。代码无关紧要,只针对读者。 –

+0

@JohnSaunders这对我很有趣。我会期望一个人对另一个人进行关注,这样当你看到所有的公众或所有私人成员/功能时,你就会知道。哼。 – Kyle

+1

它为什么重要?通常,您的IDE将帮助您导航。我想如果你使用记事本,emacs或者vi开发的话会有帮助。 –

回答

3

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

相当好用的标准。

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

1

不,这只是个人喜好的问题。如果适用,只需遵循你的公司之一。

1

有由StyleCop强制执行的规则,我见过很多人作为标准使用。

坦率地说,他们有意义,但我不认为这是最好的方式

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

:他们是有意义的,因为它们是规则,他们呼吁我们之间的强迫症,他们可以通过被强制执行,但谁在乎,如果机器可以强制执行呢?但代码不适用于机器,它适用于人类。当我需要理解代码时,我并不认为“如果我只能先了解所有常量字段,然后再理解所有字段等。”我采取了一种非常不同的方法。我希望首先看到大局,并且有一件事可以帮助我们看到代码由功能组织。

0

这里是Microsoft C# Coding Conventions (C# Programming Guide)

它没有提到订购了一类publicprotectedprivate功能或成员。

我知道在我过去的经验,FxCop曾“建议”,我把我的公共职能在我的私人聚会,但还是不一定的标准。

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; 
    } 
}