Tengo un compañero de trabajo que está en contra de la inferencia de tipo en C#. Creo que la mayoría de sus argumentos se referían a la falta de legibilidad. Mi argumento en contra de eso es que las características intellisense de Visual Studio proporcionan una forma simple de ver los tipos, y leerlos desde el código no es tan necesario como podría ser si estuviéramos sacando la codificación del bloc de notas.¿Cuáles son algunas ventajas y desventajas de la inferencia tipo en C#?
Sin embargo, tengo curiosidad acerca de las ventajas y desventajas del uso de la inferencia de tipos en C#. Vengo de C++ y sé que el 'auto' de C++ 0x tiene un beneficio más objetivo, ya que no siempre se conocen los tipos que se obtienen (especialmente cuando se realiza una programación de plantillas pesadas). Un ejemplo es usar auto para almacenar el valor de Boost.Bind.
En C#, la inferencia de tipos no parece ser tanto un requisito tanto ya que es una característica o "bueno tener"-capa de azúcar. Creo que sería útil para cuando se trata de tipos largos, por ejemplo .:
Lazy<List<MyNamespace.ISomeVeryLongInterfaceType>> myVar = obj.GetLazy();
sería:
var myVar = obj.GetLazy();
Esto es mucho más limpio en mi opinión. Sin embargo, ¿hay argumentos objetivos para O contra la inferencia de tipo? ¿Es una buena práctica de programación usarlo, incluso en situaciones donde es discutible que no proporciona ningún beneficio (por ejemplo, usar 'var' en lugar de 'int')?
Un poco de ayuda en la comprensión de cómo debería utilizar 'var' en mi día a día de codificación sería grande.
ReSharper parece decirme que use 'var' mucho ... – NickAldwin
Consulte http://blogs.msdn.com/b/ericlippert/archive/2011/04/20/uses-and-misuses-of- implicit-typing.aspx –
Bueno, si me preguntas, nombrar explícitamente el tipo debe ser una excepción muy rara e incluso entonces debes usar el tipo más general que puedas permitirte usar aquí.Pero, de nuevo, programo principalmente en Python (pato escribiendo) y soy muy aficionado a Haskell (tipo de inferencia) y la tipificación estructural. – delnan