【问题标题】:Variable names must not start with 'm_' : StyleCop Rule 1308 - Why is it considered a bad (or not good/standard) practice?变量名不能以 'm_' 开头:StyleCop 规则 1308 - 为什么它被认为是不好(或不好/标准)的做法?
【发布时间】:2011-04-20 07:23:22
【问题描述】:

我已经开始使用 StyleCop,只要有像 m_VariableName 这样声明的变量,它就会发出警告。

警告消息是:Variable names must not start with 'm_'。这是 StyleCop 规则SA1308

我可以关闭此规则。但是

1) 我想知道为什么声明以“m_”开头的变量名是一种不好的做法或被认为是一种不好的做法?

2) 下划线对 Visual Studio 重构有特殊意义吗? (我是从一位高级开发人员那里听说的。)

【问题讨论】:

  • 请不要为 C# 使用 C++ 命名。我碰巧喜欢 StyleCop 规则。 ALL_CAPs _myInstance 和 m_MyVar 太可怕了。名称应该描述对象,而不是它的属性,让关键字来做到这一点。

标签: c# .net refactoring naming-conventions stylecop


【解决方案1】:

默认的 StyleCop 规则遵循Microsoft C# coding style

这些包括不使用m_ 作为前缀(视为Hungarian Notation)。

如果您的团队不遵循这些风格指南并且有自己的,请随意关闭该规则。

【讨论】:

    【解决方案2】:

    它正好匹配微软的naming guidelines for Fields:

    不要为字段名称使用前缀。例如,不要使用 g_ 或 s_ 来区分静态字段和非静态字段。

    我相信这是微软在引入 .NET 时试图实施的全面清除匈牙利语的一部分。

    但与编码风格相关的所有事情一样,如果它不适合您和/或您的团队所接受的,那就不要使用它。

    【讨论】:

    • +1 但我已经接受了另一个回复作为答案。所以我也不能接受你的,很遗憾。
    【解决方案3】:

    我不认为这是一个坏习惯——我个人更喜欢打字和阅读m_banana 而不是this.banana。 StyleCop 有一些默认编码约定要检查,如果您不喜欢它们,或者已经在使用其他约定,请关闭警告或编写您的自定义规则。

    【讨论】:

    • +1 但我已经接受了另一个回复作为答案。所以我也不能接受你的,很遗憾。
    【解决方案4】:

    我对此并不完全确定,但一些开发人员倾向于在对象字段的名称前加上 m_。如果你打开反射器,你会发现这是微软代码中的一种常见做法。

    很多书也有这样的例子。

    现在,为什么这是一种不好的做法...不知道 :) 我个人不这样做,并且总是在字段前面加上 this 关键字。

    【讨论】:

      猜你喜欢
      • 2012-05-18
      • 2015-12-12
      • 2010-10-22
      • 2011-11-20
      • 2014-01-12
      • 2010-11-04
      相关资源
      最近更新 更多