Pregunta

Por ejemplo, rara vez necesito:

using System.Text;

pero siempre está ahí por defecto. Supongo que la aplicación utilizará más memoria si su código contiene usando el código innecesario directivas . Pero, ¿hay algo más de lo que deba estar enterado?

Además, ¿hay alguna diferencia si se utiliza la misma directiva de uso en un solo archivo en comparación con la mayoría / todos los archivos?


Edit: tenga en cuenta que esta pregunta no es sobre el concepto no relacionado llamado a usar declaración , diseñado para ayudar a uno a administrar recursos al garantizar que cuando un objeto queda fuera del alcance, es IDisposable.Dispose . Consulte Usos de " utilizando " en C # .

¿Fue útil?

Solución

No cambiará nada cuando tu programa se ejecute. Todo lo que se necesita se carga bajo demanda. Entonces, incluso si tiene esa declaración de uso, a menos que realmente use un tipo en ese espacio de nombres / ensamblaje, el ensamblaje con el que se relaciona la declaración no se cargará.

Principalmente, es solo para limpiar las preferencias personales.

Otros consejos

Existen algunas razones para eliminar el uso de (s) / namespaces no utilizados, además de la preferencia de codificación:

  • eliminar las cláusulas de uso no utilizadas en un proyecto, puede hacer que la compilación sea más rápida porque el compilador tiene menos espacios de nombres que los tipos de búsqueda para resolver. (Esto es especialmente cierto para C # 3.0 debido a los métodos de extensión, donde el compilador debe buscar métodos de extensión en todos los espacios de nombres para posibles mejores coincidencias, inferencia de tipo genérico y expresiones lambda que involucren tipos genéricos)
  • puede ayudar potencialmente a evitar la colisión de nombres en futuras compilaciones cuando se agregan nuevos tipos a los espacios de nombres no utilizados que tienen el mismo nombre que algunos tipos en los espacios de nombres usados.
  • reducirá el número de elementos en la lista de finalización automática del editor al codificar, lo que posiblemente conduzca a una escritura más rápida (en C # 3.0, esto también puede reducir la lista de métodos de extensión mostrados)

Lo que no eliminará los espacios de nombres no utilizados :

  • alterar de alguna manera la salida del compilador.
  • alterar de alguna manera la ejecución del programa compilado (carga más rápida o mejor rendimiento).

El ensamblaje resultante es el mismo con o sin uso de los usos eliminados.

La limpieza del código es importante .

Uno comienza a tener la sensación de que el código puede estar sin mantenimiento y en la ruta de Browfield cuando se ven usos superfluos. En esencia, cuando veo algunos enunciados sin usar, aparece una pequeña bandera amarilla en la parte posterior de mi cerebro que me dice que "proceda con precaución". Y leer el código de producción nunca debería darte esa sensación.

Así que limpia tus usos. No seas descuidado. Inspira confianza. Haz tu código bonito Dale a otro dev ese sentimiento cálido y difuso.

No hay ninguna construcción IL que corresponda a usando . Por lo tanto, las declaraciones de using no aumentan la memoria de la aplicación, ya que no hay ningún código o datos que se generen para ella.

Using se usa en tiempo de compilación solo con el propósito de resolver nombres de tipos cortos para nombres de tipos completamente calificados. Por lo tanto, el único efecto negativo que el uso puede tener es ralentizar un poco el tiempo de compilación y tomar un poco más de memoria durante la compilación. Aunque no estaría preocupado por eso.

Por lo tanto, el único efecto negativo real de tener usando que no necesita es en intellisense, ya que la lista de posibles coincidencias para completar mientras escribe, aumenta.

Puede tener conflictos de nombres si llama a sus clases como las clases (no utilizadas) en el espacio de nombres. En el caso de System.Text, tendrá un problema si define una clase llamada " Encoder " ;.

De todos modos, esto suele ser un problema menor y lo detecta el compilador.

Tu aplicación no usará más memoria. Es para que el compilador encuentre las clases que usa en los archivos de código. Realmente no duele más allá de no estar limpio.

La preferencia personal es principalmente. Los limpio yo mismo (Resharper hace un buen trabajo al decirme cuándo no hay necesidad de usar declaraciones).

Se podría decir que podría disminuir el tiempo de compilación, pero con la velocidad de la computadora y el compilador en estos días, simplemente no haría ningún impacto perceptible.

Dejar bien el código usando las directivas está bien. Hay un poco de valor en eliminarlos, pero no mucho. Por ejemplo, hace que mis listas de finalización de IntelliSense sean más cortas y, por lo tanto, más fáciles de navegar.

Los ensamblados compilados no se ven afectados por directivas extrañas que usan .

A veces los pongo dentro de un #region , y lo dejo colapsado; Esto hace que ver el archivo sea un poco más limpio. En mi opinión, este es uno de los pocos buenos usos de #region .

si desea mantener limpio su código, no se debe usar el uso de las declaraciones del archivo. los beneficios parecen ser muy claros cuando trabaja en un equipo de colaboración que necesita entender su código, piensa que todo el código debe mantenerse, menos código = menos trabajo, los beneficios son a largo plazo.

Sólo se utilizan como acceso directo. Por ejemplo, tendrías que escribir: System.Int32 cada vez si no tenía un sistema que usaba; en la parte superior.

Eliminar los que no se utilizan solo hace que su código se vea más limpio.

La declaración de uso solo le impide calificar los tipos que utiliza. Personalmente me gusta limpiarlos. Realmente depende de cómo se use una métrica de ubicación

Tener solo los espacios de nombres que realmente usas te permite mantener tu código documentado.

Puede encontrar fácilmente qué partes de su código se llaman entre sí con cualquier herramienta de búsqueda.

Si tiene espacios de nombres no utilizados, esto no significa nada al ejecutar una búsqueda.

Estoy trabajando en la limpieza de espacios de nombres ahora, porque constantemente me preguntan qué partes de la aplicación acceden a los mismos datos de una forma u otra.

Sé qué partes acceden a los datos en cada sentido debido a que el acceso a los datos está separado por espacios de nombres, por ejemplo. directamente a través de una base de datos y directamente a través de un servicio web.

No puedo pensar en una forma más sencilla de hacer todo esto a la vez.

Si solo quieres que tu código sea una caja negra (para los desarrolladores), entonces sí, no importa. Pero si necesita mantenerla a lo largo del tiempo, es una documentación valiosa como cualquier otro código.

La declaración de 'uso' no afecta el rendimiento, ya que es simplemente una ayuda para calificar los nombres de sus identificadores. Entonces, en lugar de tener que escribir, System.IO.Path.Combine (...) , simplemente puede escribir, Path.Combine (...) si tiene utilizando System.IO .

No olvide que el compilador realiza un gran trabajo para optimizar todo al construir su proyecto. El uso que se usa en muchos lugares o 1 no debería ser diferente una vez compilado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top