为什么 Resharper 要您将代码中的大多数变量更改为 var 类型而不是实际类型?
8 回答
这只是一种选择。您可以禁用它:
ReSharper -> 选项 -> 代码检查 -> 检查严重性 -> 代码冗余 -> 尽可能使用“var”关键字:将其更改为“不显示”
还有上下文(灯泡)选项,它将带您进入各个方向 - 这是在 ReSharper -> 选项 -> 语言 -> C# -> 上下文操作 -> “用 'var' 替换显式类型声明”下
我看到了一个来自 Hadi Hariri 的视频,他在那里展示了 Resharper 6.x。他的理由是,如果你强迫用户使用“var”,你实际上是在强迫他以更有意义的方式命名变量,这样所有的名字都是可读的并且更有意义。
默认情况下,它将“绿色曲线”这种类型的声明:
Person p = new Person();
^^^^^^
因为重复。
它还会在可以推断出时建议(小绿色下划线)var:
Person p = repository.GetPerson(1);
¯¯¯
在这种情况下,可以根据 GetPerson 方法的返回类型来推断它。
正如 Jon Skeet 所说,您可以在 resharper 的选项中禁用这些建议。
回答您的问题……因为 JetBrains 的某个人认为这是“首选”方式。
要更改它,请按照乔恩的回答。此外,您还可以在 ReSharper 选项的代码清理部分下进行代码清理(我经常使用)时更改 ReSharper 的行为。设置为“使用显式类型”。
这是 JetBrains 代码检查 wiki 上关于它的解释: http: //confluence.jetbrains.net/display/ReSharper/Use+%27var%27+keyword+when+initializer+explicitly+declares+type
如果你看到右边的类,那么也没有必要在左边看到它。如果类名很长,它也可以节省空间并减少代码。就我个人而言,我不会将 var 用于字符串、int 等简单类型,但会使用它var dictionary = new Dictionary<string, int>()
来节省空间。
我认为它建议你两种方式。如果您有明确的类型 - 您可以将其更改为 var。如果您有 var - 可以将其更改为显式。只是为了让你更快地改变,如果你认为它当然是合适的。
使用 var 可能会很好,例如,用于循环变量、迭代集合时等等,当类型对您来说是“隐式”时(当然,当 Resharper 建议它时,它对于编译器来说总是隐式的)并且它不存在不会降低代码的可读性。另外,我喜欢它来缩短一些声明,这些声明可能会随着泛型而变得很长。就像,如果您在作业的左侧写“var”, IList(IDictionary(SomeType)) myVar = List(IDictionary(SomeType)) () 不会松动太多。
(用尖括号替换括号;)
当然,我会尝试谨慎使用 vars,以提高可读性,反之亦然。
对我来说,这绝对物有所值……(即使我必须自己付钱)。但它可以减慢你的VS。如果你有 5000 行代码之类的文件,它会变得非常慢。
然而,我仍然不明白为什么我是团队中唯一使用它的人......
Vars 有助于使方法内的代码更具可读性,尤其是在您使用泛型时。
正如乔恩所说,这只是一种选择。