.NET类型的私有成员的命名约定

Joa*_*nge 33 .net c# struct class

通常当我在一个类或一个结构体中有一个私有字段时,我使用camelCasing,所以当你看到它的名字时它显然是私有的,但是在我的一些同事的C#代码中,我看到它们使用了m_大多数或有时候_,就像有某种惯例.

.NET命名约定是否阻止您使用成员名称的下划线?

当你提到MS命名约定或不提及时,他们会告诉你他们的最佳方式,但不解释其背后的原因.

此外,当我是某些代码的所有者时,我明确地将camelCasing用于私有成员,当他们必须对代码进行微小修改时,他们会坚持他们的约定而不是遵循任何约定.

这是一个争议吗?

Jar*_*Par 25

.Net框架指南允许私有字段名称_m_前缀,因为它不提供私有字段的指导.如果你看一下反射器中的BCL,你会发现前缀是最普遍的模式.

命名字段的参考页面位于此处.请注意,指南仅指定公共字段和受保护字段的用法.私人领域根本不包括在内.

  • 您是否可以发布您提到的".Net框架指南"的链接?我知道MSDN文章的两个"设计指南",但据我所知,他们在任何地方都没有提到私人领域. (2认同)

dev*_*xer 18

从技术上讲,下划线违反了.NET约定(或至少曾经 - 见注释线程),但Microsoft程序员自己经常使用下划线,文档中的许多示例都使用下划线.我认为能够一目了然地看到哪些变量是成员变量(字段)以及哪些是本地变量是非常有帮助的.下划线确实有助于此.它还可以很好地将私有成员变量与intellisense中的局部变量分开.

请参阅这个非常有用的.NET命名约定页面:

http://10rem.net/articles/net-naming-conventions-and-programming-standards---best-practices

这是微软官方建议的页面:

https://msdn.microsoft.com/en-us/library/ms229045%28v=vs.110%29.aspx

  • 这并不违反更新的.Net设计指南. (8认同)
  • @Steven和`m_portNumber`不仅难看,而且会损害可读性.基本上,`m`部分阻碍了查看`portNumber`部分. (6认同)
  • @DanM,请尝试以下链接.请注意,指南仅涵盖公共成员和受保护成员的命名.http://msdn.microsoft.com/en-us/library/ms229012.aspx (4认同)
  • @Jared,谢谢,你能为此提供参考吗?我没有在文档的这个区域看到它:http://msdn.microsoft.com/en-us/library/xzf533w0%28VS.71%29.aspx (2认同)
  • @Jared,我仍然没有看到任何一种方式下划线.那么,也许微软试图在这个问题上保持不可知? (2认同)

Jus*_*ner 12

我通常使用下划线为私有成员变量添加前缀.

它只是让您在尝试阅读代码时更容易发现它们并且Microsoft指南允许它:

public class Something
{
    private string _someString = "";

    public string SomeString
    {
        get
        {
            return _someString;
        }
        set
        {
            // Some validation
            _someString = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

像其他人所说的那样,更重要的是要保持一致.如果你是一个拥有编码标准的团队,那就m_不要试图成为反叛者而是另一个人.这会让其他人的事情变得更加困难.

  • +1 适应团队标准。 (3认同)