为什么我不应该在StyleCop中为成员变量加前缀?

时间:2010-01-20 15:39:31

标签: c# coding-style stylecop

StyleCop 刚告诉我,我不应该使用m_为成员变量添加前缀。这是c#编码风格的官方线吗?我猜这是来自MS。有谁知道这个?

  

默认情况下,StyleCop不允许使用下划线,m_等标记本地类字段,而使用'this。'前缀。使用'this。'的优点是它同样适用于所有元素类型,包括方法,属性等,而不仅仅是字段,使得对类成员的所有调用都可以立即识别,无论使用哪个编辑器查看代码。另一个优点是它在实例成员和静态成员之间创建了一个快速,可识别的区别,它不会被加上前缀。

5 个答案:

答案 0 :(得分:5)

虽然我确实喜欢私有成员字段的_前缀。只需通过相应的getter / setter来区分它们。

答案 1 :(得分:5)

请记住样式警察是一种用于强制执行特定(在本例中为Microsoft内部)编码样式的工具。其建议不应与FxCop的建议相同,或者(优秀)框架设计指南书中的任何其他建议。控制任何给定源代码的个人或组织应该是该代码的样式指南的来源 - 除了“官方”电子邮件签名之外,没有全球“官方”编码样式或'官方'编码字体。

答案 2 :(得分:3)

这完全取决于你的风格。您可以进入并修改该规则以适合您的编码风格,这样您就不会对此感到恼火。我个人觉得m_有点冗长,“我已经知道它是会员!”我会选择下划线。 _会员。

答案 3 :(得分:2)

你看一下Names of Type Members部分,然后说:

  

字段命名准则适用于静态公共和受保护   领域。 指南不包含内部和私人字段

(我的重点)

我总是觉得Stylecop喜欢this前缀很烦人。我很快就能认出我正在打电话给班级成员,因为我说:

Load();

并写作:

this.Load();

不是真的告诉我更多,它只是让我的线条更加冗长。当然,Load可能是静态的,但我在乎什么呢?

我个人喜欢m_方法。这使我很容易在代码中搜索成员变量,所有成员变量在成员下拉列表中组合在一起,当我输入m_ Intellisense时,会立即将列表缩小到我的所有成员变量。使用this前缀时,您无法获得任何此类内容。

如果针对核心C#库运行Reflector,您会看到m__之类的前缀,所以很明显Microsoft在私人和内部成员的命名方面非常灵活。 / p>

当我看到成员变量和方法带有this前缀的代码时,我倾向于降低我对该开发人员的看法,特别是如果关于它的对话结束时他们以#34; Stylecop说的理由为其辩护我应该"。

答案 4 :(得分:0)

此处记录了命名约定:

http://msdn.microsoft.com/en-us/library/xzf533w0(VS.71).aspx

不鼓励使用匈牙利语。