我理解对 var 的需求,它非常有用。没有关键字并且只是在没有类型的情况下动态定义变量是可怕的。如果您需要返工一年多未接触过的代码,您会伤害下一个必须维护您的代码的人或您自己。我不确定那是一扇应该在 C# 中打开的门,我希望它不是因为 var 在不必要时过度使用时已经导致可读性问题。
我最近看到的几乎每个 .net 3.5 示例都包含用 var 定义的所有变量。
我提出的论点是,它确实牺牲了可读性,以便在过度使用时节省击键。例如:
// What myVar is, is obvious
SomeObject myVar = new SomeObject();
// What myVar is, is obvious here as well
var myVar = new SomeObject();
我看到的问题是人们到处都在使用它……例如:
// WTF is var without really knowing what GetData() returns?
// Now the var shortcut is making me look somewhere else when this should
// just be readable!
var myVar = GetData();
// If the developer would have just done it explicitly it would actually
// be easily readable.
SomeObject myVar = GetData();
所以下一个争论将是,只是更好地命名函数......
var weight = GetExactWeightOfTheBrownYakInKilograms();
还是不知道回来的是什么。它是 int、decimal、float、weight 对象,什么?我仍然不得不浪费时间查找它......需要智能拐杖来拯救我懒惰的编程。也许在函数名中包含返回类型。好主意,现在使用 var 除了让我的所有函数都具有真正的长名称之外,什么也没给我们节省。
我认为人们只是过度使用 var 并且它会导致懒惰的编程,这反过来会导致更难阅读代码。每次输入关键字 var 时,都应该有充分的理由使用它而不是显式地使用它。