En C #, ¿me alienta usar la palabra clave var de uso múltiple para cada declaración de variable? En caso afirmativo, ¿debo mencionar esos caracteres especiales para valores literales dentro de la declaración de variable como la M para decimal en la siguiente declaración:
var myDecimal = 14.5M;
Si hace la diferencia, estoy tratando de hacer un desarrollo web con C #.
c#
variables
data-types
wassimans
fuente
fuente
auto
.Respuestas:
Ha habido mucha disputa sobre el uso de var. Mis reglas generales son las siguientes.
Básicamente, el objetivo es facilitar la lectura del código. Si cree que var es suficiente porque la asignación es obvia, use var. Use el nombre de tipo completo como una pista para el lector cuando lo considere necesario.
fuente
foreach
declaraciones donde solo me importa enumerar una colección, no necesariamente sobre el tipo de cada elemento.Cuándo usar
var
es una programación "guerra santa". Precisamente hay un lugar donde se requiere: cuando el resultado de una operación crea un tipo anónimo, como:En cualquier otro lugar, es opcional y realmente depende de su estándar de codificación usarlo o no en otras situaciones.
Y sí, necesitará los caracteres especiales para los literales para que el compilador sepa qué es en el lado derecho. En su ejemplo, sin el
M
, el valor predeterminado es endouble
lugar dedecimal
.fuente
De MSDN :
Realmente, realmente no me gusta la escritura implícita. En la superficie, tiende a hacer que el código sea más legible, pero puede generar muchos problemas en el futuro. Si un desarrollador cambia un inicializador variable, digamos, de
a
o
El tipo cambiará, lo que dará como resultado una gran cantidad de errores del compilador o, si está en una vista web y no está utilizando el paso posterior a la compilación para precompilar sus vistas, una gran cantidad de errores de tiempo de ejecución que no se detectarán sin una efectiva pruebas previas a la implementación.
La escritura implícita tampoco funciona en todas partes (desde el mismo enlace de MSDN)
Mantener un código coherente (en este caso, usar una escritura explícita en todas partes) es algo muy, muy bueno. En mi opinión,
var
es flojo y no proporciona ningún beneficio real, e introduce otro punto potencial de falla en un proceso ya complejo.Actualización 2017
Cambié completamente de opinión. Cuando trabajo en C #, lo uso la
var
mayor parte del tiempo (excepto cosas como variables de tipo interfaz y tal). Mantiene el código conciso que mejora la legibilidad. Aún así, preste atención a cuál es realmente el tipo resuelto.fuente
this.
todas partes, o decir enSystem.Blah.SomeType
lugar de unusing
, que todavía me parece increíblemente molesto, el código más breve es, al menos para mí, generalmente más fácil de analizar visualmente. Todavía hay muchos escenarios en los que la escritura correcta es la elección correcta. Pero, en estos días, soy menos abogado de idiomas que alguien que solo intenta obtener un código limpio por la puerta.using namespace std;
en los archivos .cpp. (No encabezados, ya que preferiría evitar ser asfaltado y emplumado).La Referencia de C # muestra lo siguiente para ilustrar el uso bueno o malo de esta construcción:
El siguiente ejemplo muestra dos expresiones de consulta. En la primera expresión, el uso de var está permitido pero no es obligatorio, ya que el tipo del resultado de la consulta se puede establecer explícitamente como un IEnumerable. Sin embargo, en la segunda expresión, se debe usar var porque el resultado es una colección de tipos anónimos, y el nombre de ese tipo no es accesible excepto para el compilador mismo. Tenga en cuenta que en el Ejemplo 2, el elemento variable de iteración foreach también debe escribirse implícitamente.
fuente
La palabra clave var solo solicita al compilador que deduzca el tipo de la variable de tipo var automáticamente. Por lo tanto, si desea almacenar una variable de tipo decimal en una variable var, debe usar m. Del mismo modo, si está almacenando una cadena, debe encerrarla entre comillas.
fuente
Para mí no uso var para los siguientes casos:
Fruit foo = new Apple();
. En este caso, creo que var es para evitar y usar la clase padre (aquí Fruit) es mejor al permitir una mejor comprensión de la lógica del código y la limitación de los errores probables (¡Con var, no se verifica el concepto polimórfico!)Por lo demás, creo que depende del caso y de los antecedentes del desarrollador. Algunas personas del mundo PHP preferirán no ocuparse de los tipos de variables, y algunas personas del mundo Java simplemente pensarán que var es una herejía y cuanto más detallada sea, mejor es.
Tendrás que hacer tu opinión personal :)
fuente