Я смотрю на предстоящую Visual Studio 2017 .
В разделе « Повышенная производительность» есть образ Visual Studio, используемый для замены всех вхождений var явным типом.
В коде, очевидно, есть несколько проблем, которые Visual Studio определила как «требующие исправления».
Я хотел еще раз проверить мое понимание использования var в C #, поэтому я прочитал статью Эрика Липперта от 2011 года под названием « Использование и неправильное использование неявной типизации» .
Эрик говорит:
- Используйте var, когда вам нужно; когда вы используете анонимные типы.
- Используйте var, когда тип объявления очевиден из инициализатора, особенно если это создание объекта. Это устраняет избыточность.
- Попробуйте использовать var, если код подчеркивает семантическую «бизнес-цель» переменной и преуменьшает «механические» детали ее хранения.
- Используйте явные типы, если это необходимо для правильного понимания и поддержки кода.
- Используйте описательные имена переменных независимо от того, используете ли вы «var». Имена переменных должны представлять семантику переменной, а не детали ее хранения; «DecimalRate» - это плохо; «InterestRate» - это хорошо.
Я думаю, что большая часть использования var в коде, вероятно, в порядке. Я думаю, что было бы хорошо не использовать var для бита, который читает ...
var tweetReady = workouts [ ... ]
... потому что, возможно, это не на 100% сразу, какой это тип, но даже тогда я довольно быстро знаю, что это boolean
.
Использование вар для этой части ...
var listOfTweets = new List<string>();
... выглядит так же, как хорошее использование var, потому что я считаю излишним делать следующее:
List<string> listOfTweets = new List<string>();
Хотя , исходя из того, что Эрик говорит , что переменная должна быть , вероятно , твитов , а не listOfTweets .
Какова будет причина для изменения всего var
использования здесь? Что-то не так с этим кодом, который я пропускаю?
источник
var
здесь в порядке. Вы могли бы изменить один - но даже тогда я думаю, что это действительно не нужно. Зачем менять их все на явный тип?vars
они были отмечены одинаково; с таким же предупреждающим крестиком рядом с ними и красным подчеркиванием. Предположительно Visual Studio хочет исправить их все одинаково. Если я не ошибаюсь.Ответы:
TL; DR: нет, Microsoft не препятствует использованию 'var' в C #. Изображение просто не хватает контекста, чтобы объяснить, почему оно жалуется.
Если установить VS2017 RC и откройте панель Параметры и перейдите
Text Editor -> C#
, вы увидите новый раздел:Code Style
. Это похоже на то, что ReSharper предлагал некоторое время: набор настраиваемых правил для стилей кодирования.Он включает три варианта использования
var
: для встроенных типов, когда тип переменной очевиден, и «В другом месте». В каждом случае вы можете указать «предпочитать явный тип» или «предпочесть переменную» и установить уровень уведомления «нет», «предложение», «предупреждение» или «ошибка»:источник
var
.var
, поэтому меня не волнует, каково мнение MS по этому вопросу.Я думаю, вы слишком много читаете об этом. Итак, есть функция, которая позволяет вам заменить использование неявной типизации на явные аннотации типов, и вы делаете из этого вывод, что неявная типизация не рекомендуется. Существует также функция компиляции байт-кода C♯ в CIL. Не могли бы вы сделать вывод, что C♯ не рекомендуется, и мы все должны вместо этого писать байт-код CIL? Возможно нет.
Microsoft просто демонстрирует глубокое понимание IDE вашего кода. Он может даже написать ваши типы для вас без необходимости их прописать. Вот и все.
Это просто хороший пример демонстрации возможностей понимания кода в среде IDE. Он небольшой и автономный (в отличие от большого рефакторинга), он доступен во всех выпусках и применим ко всем разработчикам (в отличие от некоторых весьма впечатляющих архитектурных средств визуализации, которые доступны только в Ultimate и не применимы для значительной части потенциальных пользователей VS, у которых никогда не будет таких больших проектов), и хотя это очень просто (буквально делает то же самое
csc.exe
, что и с тех порvar
был представлен), это, конечно, выглядит впечатляюще, особенно для тех, кто не совсем понимает неявную типизацию и вывод типов (или кто пытается гуглить «вывод типов» и перегружен такими терминами, как Хиндли-Милнер, объединение, возврат) Локальный вывод Си очень прост и понятен).Итак, вкратце: это яркий способ продемонстрировать функцию IDE.
источник