【问题标题】:C# Code Analysis dislikes protected static s_Foo (CA1709, CA1707)C# 代码分析不喜欢受保护的静态 s_Foo (CA1709, CA1707)
【发布时间】:2009-04-27 12:16:40
【问题描述】:

我通常在private 字段前添加m_,在static 成员前添加s_

使用类似的代码

protected static readonly Random s_Random = new Random ();

我通过 VS2008 的代码分析得到以下警告:

  • CA1709: Microsoft.Naming : 更正成员名称“Bar.s_Random”中“s”的大小写,将其更改为“S”。
  • CA1707: Microsoft.Naming : 从成员名称“Bar.s_Random”中删除下划线。

如何解决这个问题?我应该简单地删除s_ 吗?或者为此警告添加全局抑制?

编辑: 我的公司缺乏编码标准,所以由我来为我的代码定义它们。 (是的,我知道...)

如果您认为一般情况下应该删除s_,如果您能提供官方来源,我会很高兴。

【问题讨论】:

    标签: c# visual-studio-2008 naming-conventions code-analysis fxcop


    【解决方案1】:

    您没有遵循 Microsoft 的 .NET 命名约定,该约定告诉您不要为任何内容添加前缀。如果这确实是您想要的,请添加抑制。否则,请按照指南删除 s_ 和其他类似前缀。

    来自Names of Type Members:
    “字段名称”部分:“不要为字段名称使用前缀。例如,不要使用 g_ 或 s_ 来区分静态字段和非静态字段。”

    【讨论】:

      【解决方案2】:
      1. 卸载项目
      2. 右键点击卸载的项目=>编辑csproj
      3. 将 RunCodeAnalysis 设为 false
      4. 保存并重新加载项目

      【讨论】:

      • 我可能不太理解这个问题,但我写了这个答案,因为我做到了,那个解决方案对我有帮助。有一个 VS 更新使我的项目无法构建,并且该公司使用了我无法更改的特定命名约定。所以这个解决方案很有用
      【解决方案3】:

      取决于你想要什么。

      如果您的公司政策是在静态成员前面加上 s_,那么您应该取消警告,甚至添加您自己的规则。

      否则,请按照 Microsoft 的标准将其修复并致电您的会员 Random

      【讨论】:

      • Random 已经是类名)
      【解决方案4】:

      m_ 是一个旧的命名标准。较新的约定不遵循这种匈牙利符号。

      【讨论】:

      • 据我所知,关于这个话题没有明确的共识。您能否提供一些弃用 m_ 的来源?
      • @Will - 这很有趣。 “照我们说的做,而不是照我们做的做” - MS
      • 这不是匈牙利符号,since it does not indicate the variable's type or use,但它是一个班级成员。 m_ 前缀有充分的理由,许多人推荐它(例如Steve McConnell - “约定是否区分本地、类和全局数据?”)。
      【解决方案5】:

      由您决定如何解决它。忽略它,并保持自己的命名约定,或遵循 Microsoft 标准。就我个人而言,我没有为我的变量使用任何前缀(所以在这种情况下将是“随机”而不是“s_Random”)所以我会选择后者,但如果你真的对此感到满意,那么没有人强迫你改变。

      【讨论】:

        【解决方案6】:
        • CA1709 : protected 不是私有的,需要大写
        • CA1707:下划线不符合 ms 命名约定

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-11
          • 1970-01-01
          • 2019-08-21
          • 1970-01-01
          • 1970-01-01
          • 2018-04-01
          • 2016-03-10
          • 2020-07-03
          相关资源
          最近更新 更多