Я понимаю потребность в 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, что? Мне все еще приходится тратить время на поиски ... нужен костяк intellisense, чтобы спасти день от ленивого программирования. Может быть, включить тип возвращаемого значения в имя функции. Хорошая идея, теперь использование var не спасло нас ничего, кроме того, что все мои функции получили настоящие длинные имена.
Я думаю, что люди просто перестали использовать var, и это ведет к ленивому программированию, что, в свою очередь, приводит к тому, что код становится сложнее читать. Каждый раз, когда вы вводите ключевое слово var, у вас должна быть веская причина, почему вы используете его, а не явно.