2009-08-19 96 views
6

我刚安装整形器4.5,它想出了以下建议:Resharper是否正确?

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

只有一首Rigobert歌曲。一定要在这个论坛上查看这个subquestions的各种dup事件。 – 2009-08-19 10:50:47

+1

尝试安装StyleCop和StyleCop-for-ReSharper,它将为您提供Microsoft推荐的编码风格指南。你需要调整R#的规则来匹配。至于var的使用,我们总是在内部使用它,因为它在我们看来有助于可读性 - 类型是针对编译器的,而不是人类。 – 2009-08-19 11:00:25

+1

嗯。我总是使用这种类型 - 我想我觉得你应该知道你从lambda表达式中得到什么,如果你直接指定它,它会有所帮助。 – Yablargo 2012-07-13 01:44:15

回答

12

1)显式this指针只在必要时引用的将否则会模棱两可。由于GetRuleViolations被定义在该类型上,因此很可能不需要this

另外这里的一点是,如果GetRuleViolations回报的东西的IEnumerable,你一般会好得多使用Any()代替Count() == 0,否则可能枚举整个序列。

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

3)ReSharper的偏好var超过特定类型。

+0

+1 - 尼斯提示使用任何()谢谢 – 2009-08-19 10:51:42

0

第一招:ReSharper的是问有关删除this这仅仅是一个风格的东西给我。没有更多,保持它不会以任何方式损害性能。这只是一个可读性问题。

对于第二和第三:ReSharper的正常使用喜欢的var而不是特定的数据类型,这就是为什么建议。我相信这是一个个人选择的问题,除了可读性以外,没有其他收益。

0

第一个似乎不清楚。只要没有歧义,通常不需要在this.的前面加上前缀,我从这个例子中无法看出。 Resharper可能是对的。另外两个不会提高性能,编译结果将是相同的。这只是一个品味的问题,当然还有你的编码准则。

0

第一个应该是可配置的。据我记得,你可以告诉ReSharper你是否想拥有“这个”。只有领域,方法,两者或没有。

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

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

1

我第一个想到的就是为宗旨,如果你想“GetRuleViolations()”的静态方法。然后你不必删除“这个”标识符。

2

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

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

var reader = new XmlReader(.... // Implicit 
XmlReader reader = SomeClass.GetReader() // Explicit when you can't be sure 
3

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

我属于思想流派,说无所谓谁是对的。如果我们都坚持一种模式,我们都会发现读取其他代码更容易。

所以,在我看来,不要更改默认的resharper设置。只要接受,如果你使用默认值,你可以让每个人都变得简单。

+1

我同意你使用工具默认值。不幸的是,从我看到的,我不喜欢Resharper的默认 – 2009-08-19 10:56:55

+1

因为SECURITY,我总是将resharper的'var'设置更改为显式类型。可读性很好,但是在重构后可能会造成严重损害。 – Offler 2013-07-29 12:00:18

0

这些都不会对性能有任何影响,只有关于可读性。

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

但是,如果您发现它们不易读或违反贵公司的代码风格标准,则不需要遵循这些建议。将光标放在波浪线上时,按Alt-Enter显示Contex动作列表。其中之一将是改变检查的严重性;你根本无法展示它或者将它显示为一个提示。您可以在找到完整的检查列表。ReSharper |选项|代码检查|检查严重性