2010-09-30 799 views
5

Acabo de empezar a usar Resharper. Una de sus características es que sugiere cambios en el código basados, supongo, en buenas prácticas de codificación.¿La palabra clave "var" dificulta la legibilidad del código?

Uno de los cambios que sugirió es cambiar el tipo de variable a var durante la asignación. Seguí cambiando y ahora el código tiene var en todas partes. De alguna manera tengo la sensación de que la palabra clave "var" hace que el código sea un poco difícil de entender.

Es una buena práctica de codificación utilizar "var" siempre que sea posible o es mejor seguir con el tipo real. (excepto los tipos anónimos donde es necesario usar "var")

Gracias.

+0

Oy, anticipo argumentos subjetivos. –

+2

Altamente subjetivo: las guerras han comenzado con preguntas como esta. – Randolpho

+1

Haría una buena discusión wiki de la comunidad. – kbrimington

Respuesta

3

El C# programming guide sugiere utilizar var cuando mejora la legibilidad, por ejemplo, cuando el tipo es obvio, demasiado complicado o no es importante en absoluto.

La palabra clave var también puede ser útil cuando el tipo específico de la variable es tedioso para escribir en el teclado, o es obvio, o no se suma a la legibilidad del código. Un ejemplo donde var es útil de esta manera es con tipos genéricos anidados como los utilizados con operaciones de grupo. En la siguiente consulta, el tipo de la variable de consulta es IEnumerable<IGrouping<string, Student>>. Siempre y cuando usted y otros que deben mantener su código entiendan esto, no hay ningún problema con el uso de tipeo implícito por conveniencia y brevedad.

No hay una regla general. Hay situaciones en las que el tipo explícito puede mejorar la legibilidad.

Ejemplos:

var x = new Thingy(); //type is obvious 

var x = dict.Where(x => x.Value > 3); // type is complex and not important 

Foo(GetValue(FromOverThere())); // type is implicit anyway 

// equivalent to: 
var fromOverThere = FromOverThere(); 
var value = GetValue(fromOverThere) 
Foo(value); 

FooDocument doc = repository.Get(id); // glad to see the type here. 
3

se sugiere emplear var cuando se tiene un código como éste:

var surelyAnXText = new XText(...); 

donde siempre se puede decir que el tipo de falta estamos declarando una variable de. Pero no cuando tienes algo como esto:

var whatIsThis = foo.Some_Method_Where_You_Cant_Tell_The_Return_Type_From_The_Name(); 
Cuestiones relacionadas