为什么C#使用不同的命名约定?

时间:2009-04-29 15:15:30

标签: c# naming-conventions uml conventions

我最近开始使用C#,我注意到约定似乎是变量以大写字母和方法开头。

这是唯一可以做到这一点的语言吗?为什么? 例如:

Page Page = new Page();
Page.Action(); 

在其他语言中,您会看到:

Page page = new Page();
page.action();

由于我在UML,Ruby,C ++和Java方面做了大量工作,因此还有其他一些令人困惑的例子。

我的问题是,当其他语言没有时,为什么C#会这样做呢?

修改

  

其他Stack Overflow用户注意到C#不遵循这个惯例,这只是我的错误。

8 个答案:

答案 0 :(得分:21)

实际上,不是:C#中的约定是针对camelCased变量(和字段)名称以及PascalCase方法:

Page page = new Page();
page.Action();

答案 1 :(得分:10)

不,这是非常标准的C#代码。 2.6节中的.Net框架设计指南建议使用驼峰套管作为局部变量名称。

答案 2 :(得分:6)

公开会员使用PascalCase,私人会员使用camelCase

我认为这使得更清楚哪些方法支持类与哪些方法定义类。

public class Foo
{
    private Bar bar;
    public Bar Bar { get; set; }

    public void DoFoo()
    {
        makeFoo();
    }

    private void makeFoo()
    {
    }
}

答案 3 :(得分:2)

我编写或使用的每一组C#约定都会为变量指定驼峰大小写,所以:

Page page = new Page();
MyClass myClass = new MyClass();

不确定您在哪里看过Pascal案例,但它肯定不是C#固有或标准的东西。

答案 4 :(得分:2)

C#中的变量通常不以大写字母开头(尽管这显然取决于开发人员自己的实现)。您可能感到困惑的是Property的概念。 C#中的属性在语法上与变量一样使用(因为它们可以被检索或分配,而不是像函数一样执行),但可以在两个操作上封装业务逻辑。

要回答问题的更广泛部分,属性和方法/函数通常都会根据Microsoft guidelines以大写字母开头。

答案 5 :(得分:2)

早在.NET之前,PascalCase就是微软的一项惯例。 (在Win32 API等中)

在单一环境中使用约定也是有意义的。 .NET本身就是一个综合的环境,而另一个是微软公司,那么采用其他人就没有意义了。

另外,我强烈怀疑UML有一个命名约定,或者即使是具有命名约定的UML的想法也是有道理的。 UML为您的软件建模,并应遵循该软件的惯例。

答案 6 :(得分:2)

Public = PascalCase,我只倾向于将camelCase用于私有字段和参数参数。

在谷歌上轻松搜索此coding standard though,这不是一个糟糕的起点。

答案 7 :(得分:2)

通过使用以下两个工具,您可以了解应采用哪些约定。

FxCop:http://msdn.microsoft.com/en-us/library/bb429476(VS.80).aspx

StyleCop:http://code.msdn.microsoft.com/sourceanalysis