Estoy viendo el próximo Visual Studio 2017 .
En la sección titulada Boosted Productivity hay una imagen de Visual Studio que se usa para reemplazar todas las apariciones de var con el tipo explícito.
Aparentemente, el código tiene varios problemas que Visual Studio ha identificado como "necesidades de reparación".
Quería verificar mi comprensión del uso de var en C #, así que leí un artículo de 2011 de Eric Lippert llamado Usos y usos incorrectos de la escritura implícita .
Eric dice:
- Use var cuando sea necesario; cuando usa tipos anónimos.
- Utilice var cuando el tipo de declaración sea obvio desde el inicializador, especialmente si se trata de una creación de objeto. Esto elimina la redundancia.
- Considere usar var si el código enfatiza el "propósito comercial" semántico de la variable y minimiza los detalles "mecánicos" de su almacenamiento.
- Utilice tipos explícitos si es necesario hacerlo para que el código se entienda y mantenga correctamente.
- Utilice nombres de variables descriptivas independientemente de si utiliza "var". Los nombres de las variables deben representar la semántica de la variable, no los detalles de su almacenamiento; "DecimalRate" es malo; "Tasa de interés" es bueno.
Creo que la mayoría del uso de var en el código probablemente sea correcto. Creo que estaría bien no usar var para el bit que lee ...
var tweetReady = workouts [ ... ]
... porque tal vez no es 100% inmediato de qué tipo es, pero incluso entonces sé con bastante rapidez que es un boolean
.
El uso de var para esta parte ...
var listOfTweets = new List<string>();
... me parece exactamente un buen uso de var porque creo que es redundante hacer lo siguiente:
List<string> listOfTweets = new List<string>();
Aunque basado en lo que Eric dice, la variable probablemente debería ser tweets en lugar de listOfTweets .
¿Cuál sería la razón para cambiar todo el var
uso aquí? ¿Hay algo mal con este código que me falta?
fuente
var
aquí están bien. Posiblemente podría cambiar uno, pero incluso entonces creo que no es realmente necesario. ¿Por qué cambiarlos todos a tipo explícito?vars
han sido marcados de la misma manera; con la misma cruz de advertencia junto a ellos y un subrayado rojo. Presumiblemente, Visual Studio quiere corregirlos a todos de la misma manera. A menos que me equivoque.Respuestas:
TL; DR: no, Microsoft no desalienta el uso de 'var' en C #. La imagen simplemente carece de contexto para explicar por qué se queja.
Si instala VS2017 RC y abrir el panel de opciones e ir a
Text Editor -> C#
, verá una nueva sección:Code Style
. Esto es similar a lo que ReSharper ha ofrecido durante un tiempo: un conjunto de reglas configurables para codificar estilos.Incluye tres opciones sobre el uso de
var
: para los tipos incorporados, cuando el tipo de variable es aparente y "En otro lugar". En cada caso, puede especificar "preferir tipo explícito" o "preferir var" y establecer el nivel de notificación en "ninguno", "sugerencia", "advertencia" o "error":fuente
var
.var
, por lo que no me importa mucho lo que opina MS sobre este asunto.Creo que estás leyendo demasiado sobre eso. Por lo tanto, hay una característica que le permite reemplazar los usos del tipeo implícito con anotaciones de tipo explícito, y a partir de eso, concluye que se desaconseja el tipeo implícito. También hay una función para compilar C♯ a CIL bytecode, ¿podría concluir que C♯ no se recomienda y que todos deberíamos escribir CIL bytecode? Probablemente no.
Microsoft simplemente está mostrando la profunda comprensión que el IDE tiene de su código. Incluso puede escribir sus tipos para usted sin que tenga que deletrearlos. Eso es.
Este es simplemente un buen ejemplo de mostrar las capacidades de comprensión de código del IDE. Es pequeño y autónomo (a diferencia de mostrar una refactorización más grande), está disponible en todas las ediciones y aplicable a todos los desarrolladores (a diferencia de algunas de las características de visualización arquitectónica realmente impresionantes que solo están disponibles en Ultimate y no son aplicables a una porción significativa de los usuarios potenciales de VS que nunca tendrán proyectos tan grandes), y aunque es muy simple (literalmente está haciendo exactamente lo mismo que
csc.exe
ha estado haciendo desde entoncesvar
se introdujo), ciertamente parece impresionante, especialmente para alguien que realmente no comprende el tipeo implícito y la inferencia de tipos (o que intenta buscar en Google "inferencia de tipos" y se abruma con términos como Hindley-Milner, unificación, retroceso, cuando de hecho La inferencia local de C♯ es extremadamente simple y directa).En resumen: es una forma llamativa de mostrar una función IDE.
fuente