【问题标题】:Confused about standard identifier naming对标准标识符命名感到困惑
【发布时间】:2011-06-22 05:21:26
【问题描述】:

读一本书,上面说这两个是强制性约定:

  • 不要在标识符中使用下划线
  • 标识符不应以大写字母开头

但是在很多地方,我可以看到,特别是在属性中,作者没有遵循这一点,例如:

private int x

public int X..

下划线也是如此。有时他使用 _x 和 X 作为属性。

请问正确的命名约定是什么?

【问题讨论】:

  • 什么书,什么样的标识符?
  • 没有一个 正确约定——不同的组织和用户使用不同的约定。重要的一点是:您应该拥有遵循您的约定!
  • Hank:这本书来自 John Sharp - VS 2008。它没有指定哪些标识符..

标签: c# naming-conventions


【解决方案1】:

并非所有标识符的规则都相同。并且周围有多种标准,只要它们始终如一地使用,它们都是好的。

我从 MS 指南中记得的内容:

  • 类(类型)名称和公共成员使用 PascalCasing
  • 私有成员、本地变量和参数使用 camelCasing

但是 camelCasing 只是意味着“不要以大写字母开头”,field_fieldmFieldm_field 都符合条件。

【讨论】:

    【解决方案2】:

    除了所有其他很好的答案之外,我还要补充一点,以两个下划线开头的标识符是一种不好的做法。 C# 规范说我们保留使以两个下划线开头的内容具有特殊含义的权利。这是我们的逃生舱,所以如果我们真的需要,我们可以在不破坏任何人的情况下为语言添加新功能。或者,我们可以使用以两个下划线开头的方法作为专用编译器生成的方法。

    【讨论】:

      【解决方案3】:

      正如其他人所提到的,命名约定因开发人员和团队而异。唯一真正重要的是您始终如一

      如果您正在寻找要遵循的指南,Microsoft 发布了一组 .NET Framework 的通用命名约定。它们在他们的网站上有些分散,但this page 是一个好的开始。

      执行摘要如下:

      • 您应该为所有公共成员、类型和命名空间名称使用 Pascal 大小写(例如 BackColor
      • 您应该为参数名称和局部变量使用驼峰式大小写(例如backColor)。

      此外,您经常会看到使用下划线前缀命名的私有变量(尤其是那些具有相应公共属性的变量)(例如_backColor)。另一个约定是在 m_ 前面添加。

      【讨论】:

        【解决方案4】:

        我不完全确定是否有一种 正确 命名标识符的方式。有些人使用下划线表示成员变量,有些人使用m_ 前缀。有些使用下划线表示已作为参数传入的变量。

        至于大写字母,有些使用有些不使用,有些使用“camel-casing”,即第一个字母不是大写,但后面的“单词”是,例如:

        thisIsCamelCase
        

        重要的是你始终如一。如果您决定使用 _ 作为成员的前缀,请确保所有成员都具有该约定。

        就我个人而言,我使用_ 作为参数前缀,m_ 作为成员前缀。

        public class Vector
        {
            private float m_X;
            private float m_Y;
            private float m_Z;
        
            public Vector(float _x, float _y, float _z)
            {
                m_X = _x;
                m_Y = _y;
                m_Z = _z;
            } // eo ctor
        } // eo class Vector
        

        您的书宣扬“从不从不”然后立即忽略它自己的建议,这绝对听起来很狡猾。

        【讨论】:

          【解决方案5】:

          这取决于品味或您所在的团队。

          变量从不以大写字母或数字开头。 您可以使用下划线,这是许多开发人员的首选,因为他们的所有字段成员都在 Visual Studio 中由 intellisense 组合在一起。

          private int _number;
          private int _Number;
          

          他们中的大多数人更喜欢下划线和大写字母,因为在编写普通变量名时,您使用 camelCaseNotation。

          你会这样写:

          private int number;
          

          但是因为您使用下划线,所以第一个字符是下划线,下一个字符是大写(参见 camelCaseNotation) 像这样:

          private int _Number;
          

          对于属性,您只需用大写字母不带前缀:

          public int Number { get; set; }
          

          关于参数,如果您愿意,可以使用与字段成员相同的下划线前缀:

          private int _Number;
          
          public MyClass(int _Number) {
            this._Number = _Number;
          }
          

          没有对错之分,只要尝试遵循语言指南并让自己适应与您合作的团队即可。与您的团队讨论您将使用什么,并且所有人都使用相同的,这使得代码更易于阅读。

          关于 m_ 前缀表示法或匈牙利表示法 (sName, iNumber, ...) ,这有点“旧”,尽量避免这种情况(大多数 C/C++ 程序员使用 C# 的新符号)。

          【讨论】:

            【解决方案6】:

            我要补充一点,常量只使用大写字母是很常见的

            public const int STATUS_OK = 0;
            

            【讨论】:

              猜你喜欢
              • 2011-03-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-10-31
              • 1970-01-01
              • 2011-12-14
              相关资源
              最近更新 更多