在非公共字段上使用前缀

时间:2011-01-25 01:10:57

标签: c# coding-style

我不知道有谁使用'm_'作为非公开字段的前缀(包括我自己),但我知道应该完成的三个原因:

  1. CLR规范坚持认为属性名称和相应字段不仅仅是字母大小写。有些语言不区分大小写。可以使用“_”,但首选“m_”,因为名称应以字母字符开头。 (这来自Dan Rigsby建议的coding standards
  2. 仅仅“_”前缀不符合CLI,而“m_”符合CLI。
  3. Intellisense,至少在WPF中,从VS 2008开始,不区分XAML中定义的类型和代码隐藏中定义的类型。后面的代码中使用的'm_'将解决问题。
  4. 我的问题是:你是否(是的,你!)能够接受这个作为你正在进行的项目的新标准,考虑到所述原因,或者你是否仍然会因为肆无忌惮的仇恨而失去理智这个想法?

    P.S。请不要告诉我“匈牙利语”是不好的,因为这个建议 - 孤立 - 真的与匈牙利没有关系。

4 个答案:

答案 0 :(得分:1)

我认识的大多数人(包括我自己)只使用_作为非公共字段的前缀。键入的时间更短,它使得字段在智能感知中一起出现。我发现它比m_

更具可读性

答案 1 :(得分:0)

这个问题已被多次提出,但再一次,它归结为个人偏好,只要你保持一致,你就不会对这两种方法都有任何问题。

据我所知,大多数C#编码标准都要求没有前缀的小写成员变量名。就个人而言,我不喜欢这种方法,因为你的成员变量倾向于与方法参数冲突,所以你经常要用'this'来限定它们。

我在成员变量的名称之前使用单个下划线,但我确信有很多人不喜欢它。它归结为在整个代码库中保持一致。

答案 2 :(得分:0)

CLS 而不是 CLR 规范坚持认为 public和protected 成员不会因大小写而异。重要的是要注意这样一个事实,除非您计划在跨越多种语言的其他项目中使用它们,否则不需要使您的类型符合CLS。即使这样,如果这是一个内部项目,也可能不需要遵循CLS指南的所有

在任何情况下,这仅适用于在声明程序集之外可能可见的成员(换句话说,privateinternal成员可以免除),此建议与非公共领域。

话虽如此,由于我们能够命名变量,因此对命名约定的概念进行了辩论。就个人而言,不,我不喜欢用m_为变量添加前缀的想法,但这是个人偏好。

答案 3 :(得分:0)

是。重要的是所有程序员都要接受他们正在进行的项目的标准 - 这是一个好的迹象,表明管理层坚持标准,无论个人是否同意。

就我个人而言,我认为以“m_”为前缀是浪费击键,但如果它符合标准,那么这就是我要坚持的。

如果正在编写标准,我会指定“_”应该用作非公共字段的前缀。