【问题标题】:How to deal with ReSharper's name suggestions?如何处理 ReSharper 的名称建议?
【发布时间】:2010-10-19 08:50:39
【问题描述】:

总是,我收到以下消息:

name 'byteProivder_LengthChanged' 确实 不匹配'方法、属性和 事件”。建议的名字是 'ByteProviderLengthChanged'

即使是 VS 生成的方法名称也无法摆脱这个建议。例如FormXXX_Load建议更改为FormXXXLoad

那我该怎么办?我应该遵循名称建议还是保持 VS 风格? 如果我遵循名称建议,如何配置 ReSharper 并让它自动更改名称? 如果我不遵循 ReSharper 方式,如何关闭此名称建议选项?

【问题讨论】:

    标签: c# visual-studio-2010 resharper


    【解决方案1】:

    有一种简单的方法可以禁用 ReSharper 对整个文件/类的不一致命名评估检查。

    通过在文件/类的顶部添加以下注释,ReSharper 在分析文件/类时不会评估命名约定。

    // ReSharper disable InconsistentNaming 
    

    对于代码片段,您可以:

    // ReSharper disable InconsistentNaming
    private void btnCreate_Click(object sender, RoutedEventArgs e)
    // ReSharper restore InconsistentNaming
    {
        //.....
    }
    

    ReSharper 提供的建议 cmets 列表:

    // ReSharper disable InconsistentNaming
    // ReSharper restore InconsistentNaming
    
    // ReSharper disable CodeCleanup
    // ReSharper restore CodeCleanup
    

    【讨论】:

      【解决方案2】:

      ReSharper 的建议(在大多数情况下)很有用,但有时它会错过目标,甚至会有点烦人。

      您对此有三个解决方案;

      1. 编辑 ReSharper 的定义以符合您的喜好(这可以通过从左侧的快速修复菜单中选择“编辑 X 规则设置”来实现)

      2. 隐藏烦人的 ReSharper 消息(通过评论在本地或通过更改此类消息的设置来全局隐藏。两者都可以从快速修复菜单中实现)

      3. 当 ReSharper 的消息毫无用处时,请忽略它。

      无论您选择什么,请确保您的选择包含了您的全部工作(如果您是其中一员,还包括您团队的工作)。例如,在选项 3 的情况下,列出忽略 ReSharper 的情况。

      保持代码的一致性对于任何项目(无论大小)都至关重要,并且应该是您考虑 ReSharper 时的首要准则。

      【讨论】:

      • 我不同意。名称旨在代表有意义的东西,实际上不能浓缩为(准确的)全球准则。例如,当 VS 附加 _Load 时,它会始终如一地这样做,因此 可识别可读 - 无论这是否恰好在任何明确的指导方针中。同样,任何合理的大型项目应该具有各种增强可读性的约定——这些约定依赖于项目,几乎肯定不适合有用的全球准则。
      • 免得被遗忘;对此类命名准则进行机器验证是有代价的。这些警告会分散您代码中实际问题的注意力,并且会花费时间和精力来解决。偶尔改进名称以澄清代码是个好主意,但默认情况下使用警告和曲线来混淆代码是个坏主意。
      • @Eamon,全球指导方针将始终仅限于给定项目,因此目标不是将所有项目都纳入一个约定(如果是这种情况,您会看到许多关于问题)。此外,正如您所说,名称旨在代表有意义的东西,但命名约定与名称无关,而是与您呈现它的方式有关,因此,我不认为全球指南应该涵盖这部分。
      • @Eamon,关于你的第二条笔记,+1
      • 是的,我有点夸张;确实 :-) 我当然不反对一致的命名 - 只是重新调整实现这种一致性的默认方法。
      【解决方案3】:

      就我个人而言,我会隐藏这些警告,然后它会忽略它们。

      如果您转到 ReSharper > 然后在代码检查菜单中选择检查严重性,您可以将其关闭。

      【讨论】:

      • 这是最好的选择 - 命名准则毫无意义且令人讨厌地限制。这样的指导方针是很好的建议,但当你选择偏离它们时,不值得骚扰(大概,讽刺的是,出于可读性的原因)。
      【解决方案4】:

      要关闭建议,您可以更改 ReSharper 的检查严重性。

      ReSharper > 选项 > 代码检查 > 检查严重性 > 命名不一致

      您还可以为个别语言更改或创建自定义命名样式。

      ReSharper > 选项 > C# > 命名样式 > 高级设置

      有关创建自定义命名样式的更多信息,请访问 JetBrains'devloq

      【讨论】:

        【解决方案5】:

        我不遵循所有 r# 建议。不喜欢的我改,不能改的我关掉(我们有自己的指导方针)。

        【讨论】:

          【解决方案6】:

          您可以通过在带有警告的行之前添加以下注释来抑制单个警告实例,例如,对于以下警告:

          名称“计数器”与规则“本地函数”不匹配。建议名称为“counter”。

          像这样禁用:

          // ReSharper disable once InconsistentNaming
          function Counter() {
              this.pending = 0;
              this.succeeded = 0;
              this.failed = 0;
          }
          

          【讨论】:

            【解决方案7】:

            您还可以使用StyleCop for ReSharper 并定义自己的规则或修改默认行为以遵循您的风格。

            【讨论】:

              【解决方案8】:

              如果你想关闭一些代码检查,我认为,最简单的方法是从编辑器右侧显示的菜单中选择“检查选项...”(针对特定错误/警告) .然后会出现一个弹出窗口,您可以更改该类型检查的行为。最后一个选项:“不显示”可以解决问题。

              这适用于 R# 5.0,也可能是 4x。

              一般来说,您应该使用您认为适合您需要的编码标准。

              【讨论】:

                【解决方案9】:

                ReSharper 试图让您遵守 Microsoft 自己的 naming guidelines,这是一个好主意,尤其是在您的团队尚未使用任何命名约定的情况下。使用命名约定可以使您的代码具有更高的可读性和更一致的 API。

                【讨论】:

                • 命名约定是一回事;一个明确的约定是另一个;与您的项目实际不符的约定的机器验证再次不同。
                • 在我看来,你定义了你自己项目的现实。
                • ReSharper 的问题不在于命名约定。我喜欢遵循命名约定。我对其进行了一些编辑,它非常好。但是还有 500 次其他检查,这真的很烦人。更烦人的是,我不得不手动一个一个地取消选中检查严重性中的 500 个复选框。因为如果我不这样做,每个项目我会收到 500 条建议。如果项目很小,那就是这样。
                【解决方案10】:

                这是屏幕截图,以防您在查找 ReSharper 设置时遇到问题:

                点击 Resharper 菜单 -> 选项:

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-07-15
                  • 2014-07-30
                  • 2011-04-10
                  • 1970-01-01
                  • 2012-05-05
                  • 1970-01-01
                  相关资源
                  最近更新 更多