代码之家  ›  专栏  ›  技术社区  ›  Rigobert Song

Resharper是对的吗?

  •  6
  • Rigobert Song  · 技术社区  · 16 年前

    我刚刚安装了Reshaper 4.5,它给出了以下建议:

    return this.GetRuleViolations().Count() == 0; -- REMOVE this.
    
    new string[] { this.ID.ToString(), this.Registration } -- REMOVE string, MAKE ANONYMOUS TYPE
    
    int i = Method.GetNumber(); -- REPLACE int WITH var
    

    我认为在某些情况下,这会降低代码的可读性,但它会提高性能吗?做出这些改变有什么好处?

    谢谢

    8 回复  |  直到 16 年前
        1
  •  12
  •   Brian Rasmussen    16 年前

    1) 明确的 this 只有当引用不明确时,指针才是必要的。自从 GetRuleViolations 在类型上定义,您很可能不需要 .

    这里的另一点是,如果 GetRule违规 IEnumerable 对于某些东西,你通常会更好地使用 Any() 而不是 Count() == 0 因为你冒着枚举整个序列的风险。

    2) 字符串可以从初始化中推断出来。

    3) Resharper更喜欢 var 超过特定类型。

        2
  •  3
  •   grenade    16 年前

    除了小方块变绿的明显好处外,如果你正在编写稍后将由其他人维护的代码,那么在编码语法中不使用你的个人偏好是有道理的。Resharper在以一种非常广泛的受众可识别的方式格式化代码方面变得越来越有用。

    我属于那种认为谁的方式是正确的并不重要的学派。如果我们都坚持一种模式,我们都会发现更容易阅读彼此的代码。

    所以,依我拙见,不要更改默认的重新锐化器设置。只要接受这样一个事实,如果你使用默认值,你就能让每个人的生活变得简单。

        3
  •  2
  •   Per Hornshøj-Schierbeck    16 年前

    我认为第一个是为了这个目的,如果你想让“GetRuleViolation()”成为一个静态方法。然后,您不必删除“this”标识符。

        4
  •  1
  •   Jehof    16 年前

    对于第三个——最让我恼火的一个。它为读者提供的信息较少,我认为这只是展示一个新功能的问题。

    我会说-当你知道返回类型时使用var,当你不喜欢时使用正确的对象类型:

    var reader = new XmlReader(....  // Implicit
    XmlReader reader = SomeClass.GetReader() // Explicit when you can't be sure
    
        5
  •  0
  •   Aamir    16 年前

    this

    对于第二和第三:Resharper通常更喜欢使用 var 而不是特定的数据类型,这就是建议的原因。我认为这是个人选择的问题,除了可读性之外,没有其他额外的好处。

        6
  •  0
  •   Malte Clasen    16 年前

    this. 只要没有歧义,我无法从这个例子中看出。Resharper可能是对的。另外两个不会提高性能,编译结果将是相同的。这只是品味的问题,当然还有你的编码指南。

        7
  •  0
  •   Cygon    16 年前

    第一个应该是可配置的。据我所知,你可以告诉ReSharper,你是否只想在字段、方法前面加上“this”,或者两者都加,或者什么都不加。

    使用“var”不会改变生成的CIL代码中的任何内容,因此性能将保持不变。我已经有一段时间没有使用ReSharper了,我不知道为什么它如此积极地推广匿名类型,但“var”的一个优点是它更能抵抗变化。

    意思是if,而不是调用Method。GetNumber(),你调用了一个包装器,例如Filter(Method.GetNumber()),在返回Nullable的同一行中,你不必更新变量的类型。

        8
  •  0
  •   Alexey Romanov    16 年前

    关于可读性。

    我发现建议1和2比您的原始代码更具可读性,而建议3的可读性较低。

    但是,如果你发现这些建议可读性较差或违反了公司的代码风格标准,你不需要仅仅遵循这些建议。将光标放在波浪线上时,按Alt-Enter显示Contex操作列表。其中之一是改变检查的严重程度;你根本不能显示它,也不能将其作为提示显示。您可以在以下网址找到完整的检查清单 ReSharper |选项|代码检查|检查严重性 .