remarks cref c# assemblies using

cref - remarks c#



¿Por qué debería eliminar C#innecesario utilizando directivas? (14)

Dejar bien 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 el using directivas extrañas.

A veces los pongo dentro de una #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 .

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 no contiene instrucciones de uso innecesarias. ¿Pero hay algo más de lo que debería 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?

Edición: tenga en cuenta que esta pregunta no es sobre el concepto no relacionado llamado una declaración de uso , diseñado para ayudar a uno a administrar los recursos al garantizar que cuando un objeto se sale del alcance, se llama a su método IDisposable.Dispose . Ver Usos de "usar" en C # .


Es preferencia personal principalmente. Los limpio yo mismo (Resharper hace un buen trabajo diciéndome cuando no es necesario 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 tendría ningún impacto perceptible.


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

  • Al 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)
  • potencialmente puede ayudar 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á la cantidad 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 ninguna manera la salida del compilador.
  • alterar de cualquier 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 declaración de "uso" no afecta el rendimiento, ya que es simplemente un ayudante para calificar los nombres de sus identificadores. Entonces, en lugar de tener que escribir, System.IO.Path.Combine (...) , simplemente puede escribir, Path.Combine (...) si está usando System.IO .


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


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 el camino 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 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 instrucción de uso no se cargará.

Principalmente, es sólo para limpiar las preferencias personales.


No hay ninguna construcción IL que corresponda a using . Por lo tanto, las declaraciones de using no aumentan la memoria de la aplicación, ya que no hay código ni 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 a nombres de tipos completamente calificados. Por lo tanto, el único efecto negativo que puede tener un using innecesario 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 using declaraciones que no necesita es en intellisense, ya que la lista de coincidencias potenciales para completar mientras escribe se incrementa.


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


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 "Codificador".

De todos modos, esto suele ser un problema menor, y detectado por el compilador.


Sólo se utilizan como un acceso directo. Por ejemplo, tendría que escribir: System.Int32 cada vez que no tuviera un sistema de uso; encima.

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


Si desea mantener limpio su código, no lo use using declaraciones deben eliminarse 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.


Su aplicación no utilizará 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.


Tener solo los espacios de nombres que realmente usa le permite mantener su 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 están accediendo a los mismos datos de una forma u otra.

Sé qué partes están accediendo 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 desea que su código sea una caja negra (para los desarrolladores), entonces sí, no importa. Pero si necesita mantenerlo a lo largo del tiempo, es una documentación valiosa como todo otro código.