Resharper是否正确?
我刚刚安装了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
我应该这样做吗?
我认为在某些情况下,它会降低代码的可读性,但会提高性能吗? 进行这些更改有什么好处?
谢谢
1)只有当引用不明确时才需要显式this
指针。 由于GetRuleViolations
是在类型上定义的,因此您很可能不需要this
。
这里的另一点是,如果GetRuleViolations
返回一个IEnumerable
的东西,你通常会更好地使用Any()
而不是Count() == 0
因为你冒险枚举整个序列。
2)字符串可以从初始化推断出来。
3)Resharper更喜欢特定类型的var
。
除了你的小方块绿色的明显好处,如果你正在编写将由其他人以后维护的代码,那么在编码语法中不使用你的个人偏好是很有意义的。 Resharper在以非常广泛的受众可识别的方式格式化代码方面变得非常有用。
我属于思想学派,认为谁的方式是对的并不重要。 如果我们都坚持一个模式,我们都会发现更容易阅读彼此的代码。
因此,在我看来,不要更改默认的resharper设置。 只要接受,如果你使用默认值,你就会让每个人的生活变得简单。
对于第三个 – 最让我烦恼的那个。 它为读者提供了更少的信息,我认为这只是展示新function的问题。
我会说 – 当你知道返回类型时使用var并在你不喜欢这个时使用正确的对象类型:
var reader = new XmlReader(.... // Implicit XmlReader reader = SomeClass.GetReader() // Explicit when you can't be sure
我认为第一个是出于此目的,如果你想让“GetRuleViolations()”成为静态方法。 然后你不必删除“this”标识符。
第一个:Resharper要求删除this
,这对我来说只是一种风格。 没有更多,保持它不会以任何方式损害性能。 这只是一个可读性的问题。
对于第二个和第三个:Resharper通常更喜欢使用var
而不是特定的数据类型,这就是建议的原因。 我认为这是个人选择的问题,并且除了可读性之外不提供额外的收益。
第一个似乎不清楚我。 您通常不必为此添加前缀this.
只要没有歧义,我从这个例子中无法分辨。 Resharper可能是对的。 另外两个不会提高性能,编译结果也是一样的。 这只是一个品味问题,当然还有您的编码指南。
第一个应该是可配置的。 据我记忆,你可以告诉ReSharper你是否想要“这个”。 只有字段,方法,两者或没有。
使用“var”不会更改生成的CIL代码中的任何内容,因此性能将保持不变。 我有一段时间没有使用过ReSharper,我不知道为什么它会如此积极地推广匿名类型,但“var”的一个优点是它更能抵抗变化。
这意味着,如果不是调用Method.GetNumber(),而是调用了一个包装器,例如。 在返回Nullable的同一行中过滤(Method.GetNumber()),您不必更新变量的类型。
这些都不会对性能产生任何影响, 只会影响可读性。
我发现建议1和2更具可读性,并且比原始代码的可读性低3。
但是,如果您发现它们的可读性较差或违反了公司的代码风格标准,则您无需遵循这些建议。 将光标放在波浪线上时,按Alt-Enter显示“上下文操作”列表。 其中一个是改变检查的严重程度; 您根本无法显示它或将其显示为提示。 您可以在ReSharper |找到完整的检查列表 选项| 代码检查| 检查严重程度 。
上述就是C#学习教程:Resharper是否正确?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1015133.html