3

StyleCop刚刚告诉我,我不应该在成员变量前面加上m_. 那是 C# 编码风格的官方路线吗?我想它来自MS。有人对这个有了解吗??

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

4

5 回答 5

5

虽然我确实喜欢_为私有成员字段添加一些前缀。只是为了区分它们与相应的 getter/setter 的区别。

于 2010-01-20T15:44:01.427 回答
5

请记住,Style Cop 是一种用于强制执行特定(在本例中为 Microsoft 内部)编码风格的工具。它的建议不应与 FxCop 的建议或(优秀的)框架设计指南书中的任何其他建议同等重要。控制任何给定源代码的个人或组织应该是该代码样式指南的来源——没有全局“官方”编码样式,就像没有“官方”电子邮件签名或“官方”编码字体一样。

于 2010-01-20T15:59:26.180 回答
3

这完全取决于你的风格。您可以进入并修改该规则以适合您的编码风格,这样您就不会被它惹恼。个人觉得m_有点啰嗦,“我已经知道是会员了!” 我只会用下划线前。_成员。

于 2010-01-20T15:43:24.673 回答
2

如果您查看类型成员的名称部分,那么它会说:

字段命名准则适用于静态公共和受保护字段。指南未涵盖内部和私有字段

(我的重点)

我一直觉得 Stylecop 喜欢this前缀很烦人。我可以立即认出我正在打电话给班级成员,因为我在说:

Load();

和写作:

this.Load();

并没有真正告诉我更多,它只是让我的台词更加冗长。当然,Load可能是静态的,但我在乎什么?

我个人喜欢这种m_方法。它使我可以轻松地在代码中搜索成员变量,所有成员变量在成员下拉列表中组合在一起,当我输入m_Intellisense 时,会立即将列表缩小到我的所有成员变量。this使用前缀时,您不会得到任何这些。

如果您针对核心 C# 库运行 Reflector,您会看到类似m_和刚刚_使用的前缀,因此显然微软在私有和内部成员的命名方面非常灵活。

当我看到带有this成员变量和方法前缀的代码时,我倾向于降低我对该开发人员的看法,特别是如果关于它的对话以他们以“Stylecop 说我应该”为由证明它是正当的。

于 2014-03-27T12:08:38.817 回答
0

此处记录了命名约定:

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

不鼓励使用匈牙利符号。

于 2010-01-20T15:43:57.263 回答