【问题标题】:Why does C# use a different Naming convention? [closed]为什么 C# 使用不同的命名约定? [关闭]
【发布时间】:2009-04-29 15:15:29
【问题描述】:

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

这是唯一的语言吗?为什么? 例如:

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

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

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

还有其他令人困惑的例子,因为我使用 UML、Ruby、C++ 和 Java 做了很多工作。

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

编辑

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

【问题讨论】:

  • 这不是 C# 约定...
  • 我从未见过使用这种约定。永远。
  • 您可能会感到困惑,因为属性是 PascalCase。变量按照约定是驼峰式的。
  • 关闭它会很遗憾。如何根据您所学的内容对其进行编辑。我去过的最后几个地方确实可以刷新标准命名。
  • 由于我不知道的原因(我不知道为什么我的一些前同事开发了这个约定),我也在 C# 代码中看到了这个。

标签: c# naming-conventions uml conventions


【解决方案1】:

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

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

【讨论】:

  • PascalCase 用于公共方法、属性和事件
  • 好吧,我猜我目前看到的代码很乱。谢谢
【解决方案2】:

不,这是相当不标准的 C# 代码。第 2.6 节中的 .Net Framework 设计指南建议对局部变量名称使用驼峰式大小写。

【讨论】:

  • 这是一篇非常好的文章,介绍了 C# 为何如此。我个人喜欢他在这里列出的标准。在我的工作中,他们对本地字符串有一个可怕的 l_s_SomeString 命名约定。我讨厌下划线。
【解决方案3】:

公共成员使用PascalCase,私人成员使用camelCase

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

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

    public void DoFoo()
    {
        makeFoo();
    }

    private void makeFoo()
    {
    }
}

【讨论】:

  • 根据微软命名指南 makeFoo() 应该被命名为 MakeFoo()。方法、属性和事件的大小写没有区别,具体取决于它们的范围。 msdn.microsoft.com/en-us/library/x2dbyw72(VS.71).aspx
  • 你是对的。发布的指南只涉及公开的成员,而将内部指南留给实施者。在 C# 中,我只见过用于私有方法的 camelCase,但我认为它本身并不是“标准”。与私有成员的所有其他约定一样,由实现者定义。感谢您的澄清。
【解决方案4】:

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

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

不知道您在哪里见过使用 Pascal 大小写,但它肯定不是 C# 固有的东西或标准。

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

      PascalCase 早在 .NET 之前就已成为 Microsoft 的惯例。 (在 Win32 API 等中)

      在单个环境中使用约定也很有意义。 .NET 本身就是一个综合环境,而微软公司又是另一个,采用别人的确实没有意义。

      另外,我强烈怀疑 UML 有一个命名约定,或者甚至 UML 有一个命名约定的想法是否有意义。 UML 为您的软件建模,并且应该遵循该软件的约定。

      【讨论】:

        【解决方案7】:

        您可以通过使用以下两个工具了解很多关于应采用哪些约定的信息。

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

        风格警察:http://code.msdn.microsoft.com/sourceanalysis

        【讨论】:

          【解决方案8】:

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

          阅读此coding standard though 可以在 google 上轻松搜索,这是一个不错的起点。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-16
            • 1970-01-01
            • 2016-12-25
            • 1970-01-01
            • 2010-12-17
            • 1970-01-01
            相关资源
            最近更新 更多