Resharper: vars

¿Por qué Resharper quiere que cambie la mayoría de las variables al tipo var en lugar del tipo real en el código?

Es solo una opción. Puedes deshabilitarlo:

ReSharper -> Opciones -> Inspección de código -> Gravedad de inspección -> Redundencias de código -> Use la palabra clave ‘var’ siempre que sea posible: cambie esto a “No mostrar”

También está la opción de contexto (bombilla) que lo llevará en cada dirección: esto está en ReSharper -> Opciones -> Idiomas -> C # -> Acciones de contexto -> “Reemplaza la statement de tipo explícita con ‘var'”

Vi un video de Hadi Hariri, donde estaba presentando Resharper 6.x. Su razonamiento era, si estás forzando a un usuario a usar “var”, en realidad lo estás forzando a nombrar la variable de una manera más significativa, de esa manera todos los nombres son legibles y tienen más sentido.

Por defecto, aparecerá declaraciones de “garabatos verdes” de este tipo:

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

Debido a la repetición.

También sugerirá (varilla de subrayado verde pequeña) var cuando se pueda inferir:

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

En este caso, se puede deducir debido al tipo de devolución del método GetPerson.

Como afirma Jon Skeet, puede desactivar estas sugerencias en las opciones de reafilamiento.

Para responder a su pregunta … porque alguien en JetBrains decidió que esa era la forma “preferida”.

Para cambiarlo, sigue la respuesta de Jon. Además, también puede cambiar el comportamiento de ReSharper al hacer Code Cleanup (que uso mucho) bajo la sección Code Cleanup en las opciones de ReSharper. Seleccione “Usar tipo explícito”.

Esta es la explicación en el wiki de inspección de códigos de JetBrains al respecto: http://confluence.jetbrains.net/display/ReSharper/Use+%27var%27+keyword+when+initializer+explicitly+declares+type

Si ve la clase a la derecha, no hay una gran necesidad de verla a la izquierda también. También ahorra espacio y reduce el código si el nombre de la clase es bastante largo. Personalmente, no utilizo var para tipos simples como string, int, etc. pero lo uso para algo como var dictionary = new Dictionary() para ahorrar espacio.

Creo que sugiere las dos formas. Si tiene un tipo explícito, puede cambiarlo a var. Si tiene var – puede cambiarlo a explícito. Solo para que sea más rápido para ti cambiar si crees que es apropiado, por supuesto.

Sería bueno usar vars, por ejemplo, para variables de bucle, al iterar una colección, etc., cuando el tipo es “implícito” para usted (siempre está implícito para el comstackdor, por supuesto, cuando Resharper lo sugiere) y su ausencia no hace que el código sea menos legible Además, me gusta acortar algunas declaraciones, que pueden crecer bastante tiempo con los generics. Like, IList (IDictionary (SomeType)) myVar = List (IDictionary (SomeType)) () no perderá mucho si escribe “var” en el lado izquierdo de la tarea.

(Reemplazar parantheses con corchetes angulares;)

Por supuesto, trataría de usar vars con cuidado, para mejorar la legibilidad y no al revés.

Para mí, definitivamente vale la pena el precio … (incluso si tuviera que pagarlo yo mismo). Pero puede ralentizar su VS. Puede ser realmente lento si tiene archivos como 5000 líneas de código.

Lo que aún no entiendo es por qué soy el único en el equipo que lo usa …

Los Vars ayudan a que el código sea más legible dentro de un método, especialmente si usa generics.

Como dice Jon, es solo una opción.