Resharper, конечно, думает так, и из коробки он будет навязывать вам конвертировать
Dooberry dooberry = new Dooberry();
к
var dooberry = new Dooberry();
Это действительно считается лучшим стилем?
Resharper, конечно, думает так, и из коробки он будет навязывать вам конвертировать
Dooberry dooberry = new Dooberry();
к
var dooberry = new Dooberry();
Это действительно считается лучшим стилем?
Это, конечно, вопрос стиля, но я согласен с Dare: С# 3.0 Неявные декларации типа: для var или не для var?, Я думаю, что использование var вместо явного типа делает ваш код менее читаемым. В следующем коде:
var result = GetUserID();
Что такое результат? Int, строка, GUID? Да, это важно, и нет, мне не нужно было бы копаться в коде, чтобы знать. Это особенно раздражает образцы кода.
Джефф написал сообщение об этом, сказав он предпочитает var. Но этот парень сумасшедший!
Я вижу шаблон для успеха stackoverflow: выкопайте старые записи CodingHorror и (стиль Jeopardy), выражайте их в терминах вопроса.
Я использую его только тогда, когда ясно видно, что такое var.
ясно:
XmlNodeList itemList = rssNode.SelectNodes("item");
var rssItems = new RssItem[itemList.Count];
непонятно мне:
var itemList = rssNode.SelectNodes("item");
var rssItems = new RssItem[itemList.Count];
Лучшее резюме ответа, которое я видел, это комментарий Эрика Липперта, в котором говорится, что вы должны использовать конкретный тип, если он важно, какой тип, но не иначе. По существу информация о типе должна быть зарезервирована для мест, где этот тип важен.
Стандартом в моей компании является использование var везде, к которому мы пришли после чтения различных рекомендаций, а затем потратить некоторое время, пытаясь выяснить, есть ли недостаток информации аннотированного типа была помощь или препятствие. Мы чувствовали, что это помощь.
Большинство рекомендаций, к которым люди обратились (например, Dare one), являются рекомендациями людей, которые никогда не пробовали кодирование с использованием var вместо конкретного типа. Это делает рекомендации практически бесполезными, потому что они не говорят по опыту, они просто экстраполируют.
Лучший совет, который я могу вам дать, - попробовать его для себя и посмотреть, что работает для вас и вашей команды.
@jongalloway - var не обязательно делает ваш код более нечитаемым.
var myvariable = DateTime.Now
DateTime myvariable = DateTime.Now;
Первый такой же читаемый, как и второй, и требует меньше работы
var myvariable = ResultFromMethod();
здесь у вас есть точка, var может сделать код менее читаемым. Мне нравится var, потому что, если я изменяю десятичное число в double, мне не нужно менять его в кучу мест (и не говорите рефактору, иногда я забываю, просто позвольте мне var!)
EDIT: просто прочитайте статью, я согласен. лол.
У меня такое чувство, что это будет один из самых популярных вопросов, заданных со временем в Stack Overflow. Это сводится к предпочтению. Все, что вы считаете более читаемым. Я предпочитаю var, когда тип определен с правой стороны, потому что он более краткий. Когда я назначаю переменную из вызова метода, я использую явное объявление типа.
Было хорошее обсуждение этого @Ужас кодирования
Лично я стараюсь свести к минимуму его использование, я обнаружил, что он болит читаемость, особенно при назначении переменной из вызова метода.
Одним из преимуществ такого инструмента, как ReSharper, является то, что вы можете написать код, как вам нравится, и затем переформатировать его в нечто более удобное для обслуживания. У меня есть R #, чтобы всегда переформатировать так, чтобы фактический тип в использовании был видимым, однако при написании кода я почти всегда набираю 'var'.
Хорошие инструменты позволяют вам иметь лучшее из обоих миров.
Джон.
Это только имеет смысл, когда вы заранее не знаете тип.
"Лучший стиль" субъективен и варьируется в зависимости от контекста.
Иногда проще использовать "var" вместо того, чтобы вводить какое-то очень длинное имя класса, или если вы не уверены в возвращаемом типе данной функции. Я нахожу, что я больше использую "var" , когда обманываю с Linq или в объявлениях цикла.
В других случаях использование полного имени класса является более полезным, поскольку он документирует код лучше, чем "var" .
Я считаю, что разработчик должен принять решение. Серебряной пули нет. Нет "одного истинного пути".
Ура!
Нет всегда, но я бы сказал, что много времени. Объявления типа не намного полезнее, чем когда-либо были венгерские обозначения. У вас по-прежнему есть та же проблема, что типы могут быть изменены, а инструменты рефакторинга полезны для того, что они не идеальны по сравнению с тем, что им не нужно изменять, где указан тип, за исключением одного места, которое следует за "Не повторять себя" принцип.
Любой оператор одной строки, где имя типа может быть задано как для переменной, так и для ее значения, обязательно должен использовать var, особенно когда он длинный Generic < OtherGeneric < T, U, V > , словарь < X, Y → >
Там действительно хорошая статья MSDN по этому вопросу, в которой описаны некоторые случаи, когда вы не можете использовать var:
Следующие ограничения применяются к объявлениям неявно типизированных переменных:
- var может использоваться только при объявлении и инициализации локальной переменной в том же заявлении; переменная не может быть инициализирован нулем или группа методов или анонимная функция.
- var не может использоваться в полях в классе.
- Переменные, объявленные с помощью var, не могут использоваться в инициализации выражение. Другими словами, это выражение является законным: int я = (i = 20); но это выражение дает ошибка времени компиляции: var я = (i = 20);
- Несколько неявно типизированных переменных не могут быть инициализированы в том же выражение.
- Если тип с именем var находится в области видимости, то ключевое слово var будет разрешено это имя типа и не будет рассматриваться как часть неявно типизированных локальных объявление переменной.
Я бы рекомендовал проверить его, чтобы понять все последствия использования var в вашем коде.
Я вижу шаблон для stackoverflow успех: выкопайте старые записи CodingHorror и (стиль "Опасность" ) условия вопроса.
Я умоляю невиновного! Но вы правы, это казалось довольно популярным вопросом.