Решарпер: Варс - PullRequest
       6

Решарпер: Варс

20 голосов
/ 17 ноября 2008

Почему Resharper хочет, чтобы вы изменили большинство переменных на тип var вместо фактического типа в коде?

Ответы [ 8 ]

31 голосов
/ 17 ноября 2008

Это просто вариант. Вы можете отключить его:

ReSharper -> Параметры -> Проверка кода -> Серьезность проверки -> Избыточности кода -> При возможности используйте ключевое слово 'var': замените его на «Не показывать»

Существует также опция контекста (лампочка), которая будет направлять вас в каждом направлении - это в разделе ReSharper -> Параметры -> Языки -> C # -> Контекстные действия -> «Заменяет явное объявление типа на« var »»

21 голосов
/ 30 августа 2011

Я видел видео с Хади Харири, где он представлял Resharper 6.x. Он рассуждал так: если вы заставляете пользователя использовать «var», вы фактически заставляете его называть переменную более осмысленным образом, чтобы все имена были удобочитаемыми и имели больше смысла.

6 голосов
/ 17 ноября 2008

По умолчанию это будут объявления "зеленого загиба" этого типа:

Person p = new Person();
^^^^^^

Из-за повторения.

Также будет предложено (маленькое зеленое подчеркивание) var, когда можно сделать вывод:

Person p = repository.GetPerson(1);
¯¯¯

В этом случае он может быть получен из-за типа возвращаемого значения метода GetPerson.

Как сказал Джон Скит, вы можете отключить эти предложения в настройках resharper.

5 голосов
/ 17 ноября 2008

Чтобы ответить на ваш вопрос ... потому что кто-то в JetBrains решил, что это был "предпочтительный" способ.

Чтобы изменить его, следуйте ответу Джона. Кроме того, вы также можете изменить поведение ReSharper при выполнении очистки кода (которую я часто использую) в разделе «Очистка кода» в параметрах ReSharper. Установите «Использовать явный тип».

3 голосов
/ 23 ноября 2012

Это объяснение в вики по поводу проверки кода JetBrains: http://confluence.jetbrains.net/display/ReSharper/Use+%27var%27+keyword+when+initializer+explicitly+declares+type

Если вы видите класс справа, нет большой необходимости видеть его также слева. Также это экономит место и уменьшает код, если имя класса довольно длинное. Лично я не использую var для простых типов, таких как string, int и т. Д., Но использую его для чего-то вроде var dictionary = new Dictionary<string, int>() для экономии места.

1 голос
/ 17 ноября 2008

Для меня это определенно стоит цена ... (даже если бы я должен был заплатить сам). Но это может замедлить ваш VS. Это может стать очень медленным, если у вас есть файлы, такие как 5000 строк кода.

Однако я до сих пор не понимаю, почему я единственный в команде, использующий это ...

1 голос
/ 17 ноября 2008

Я думаю, это предлагает вам оба пути. Если у вас есть явный тип - вы можете изменить его на var. Если у вас есть var - можете поменять его на явный. Просто чтобы вы могли быстрее измениться, если, конечно, считаете это уместным.

Может быть полезно использовать vars, например, для переменных цикла, при итерации коллекции и т. Д., Когда тип является «неявным» для вас (это всегда неявно для компилятора, конечно, когда это предлагает Ресарпер) и его отсутствие не делает код менее читабельным. Кроме того, мне нравится сокращать некоторые объявления, которые могут вырасти довольно долго с генериками. Например, IList (IDictionary (SomeType)) myVar = List (IDictionary (SomeType)) () не потеряет много, если вы напишите «var» в левой части назначения.

(заменить парантезы угловыми скобками;)

Конечно, я бы старался использовать переменные с осторожностью, чтобы улучшить читаемость, а не наоборот.

0 голосов
/ 17 ноября 2008

Vars помогают сделать код более читабельным внутри метода, особенно если вы используете обобщенные значения

Как говорит Джон, это всего лишь вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...