¿Por qué razones debo mantener limpia la sección "usar" en C #?

11

Una vez, cuando estaba refactorizando mi código, subí el IDE a la sección de uso de mi clase C #, limpié los espacios de nombres no utilizados y los espacios de nombres duplicados , y los ordené todos.

Mi par (programación de pares) me preguntó la razón. No tenía idea de por qué hice eso. Lo hice por costumbre de mantener todo mi código limpio y ordenado. Quiero decir, le dije que tener un código más limpio es una buena idea en general, pero, por supuesto, esa razón no era una buena justificación, ya que ni siquiera me molestaría en pasar el tiempo en la sección de uso de cualquier página de códigos C #.

Dado que muchas veces mueve una clase o una enumeración (o un tipo en general) de un espacio de nombres a otro espacio de nombres, y esto agrega nuevas declaraciones de uso a su código (ya sea manualmente subiendo la ventana de código y escribiendo la declaración de uso usted mismo, o a través del editor usando la combinación Alt+ Ctrl+ F10), y dado que estas nuevas declaraciones de uso se agregarían al final de la sección de uso , lo que hace que no se ordenen alfabéticamente, y dado que el compilador nunca se queja de ninguno de estos problemas, ¿por qué debería importarnos hacer esto? sección limpia y ordenada? ¿Qué razones podríamos tener?

Saeed Neamati
fuente
55
Esto ya se ha preguntado y respondido en Stack Overflow - stackoverflow.com/questions/4163320/unused-using-statements (y las dos preguntas vinculadas en la barra lateral) - básicamente no hay razón para preocuparse por los usos no utilizados
ChrisF
Gran referencia @ChrisF, creo que obtuve mi respuesta allí. Tal vez deberías unir la pregunta con esa, o hacer algo similar. :)
Saeed Neamati el
Mira esto también: stackoverflow.com/a/136646/333306

Respuestas:

22

No hay diferencia de rendimiento, no importa cuántas usingdirectivas tenga.

Pero creo que tiene sentido mantenerlos limpios por dos razones:

  1. Si observa los usings, puede ver qué dependencias tiene el archivo. Esto puede ayudarlo a descubrir qué hacen los tipos en el archivo. Si hace esto, tener la usings en un orden específico lo ayuda a verlo más rápido.
  2. Si tiene demasiados correos usingelectrónicos, puede indicar que tiene una separación deficiente de las preocupaciones y que los tipos en el archivo hacen demasiado.

Ambos no son muy importantes, por lo que no debes preocuparte demasiado. Pero personalmente, creo que vale la pena mantener el usings limpio.

svick
fuente
8

Mis razones principales para limpiar entre las declaraciones de uso son:

  • Cuanto más se utilicen las declaraciones, mayor será la posibilidad de nombrar conflictos, lo que significaría que debe incluir partes del espacio de nombres en el código para evitar la ambigüedad.
  • IntelliSense se filtra en función de todos los ensamblados en sus declaraciones de uso. Por lo tanto, si lo limpia de declaraciones innecesarias, se ayudará a sí mismo ayudando con la precisión de IntelliSense.

Además de eso, estoy de acuerdo con las otras respuestas, ya que aumenta la legibilidad y hace que sea más fácil tener una idea de lo que hacen los tipos en la clase.

Fredrik Ljung
fuente
No entiendo por qué esto no es más votado. Los conflictos de espacio de nombres son un problema legítimo.
RubberDuck
7

"La perfección se logra no cuando no hay nada más que agregar, sino cuando no hay nada más que quitar" - Antoine de Saint-Exupery

Siempre que pueda eliminar algo que no es necesario y no agrega comprensión, hágalo (la legibilidad vale un código adicional).

jmoreno
fuente
Gran aforismo. Me gustó la idea. +1;)
Saeed Neamati
4

Solo está eliminando el ruido de la señal. Menos ruido significa que es más fácil recibir la señal, es decir, entender la intención del código.

Sin embargo, como generador de ruido, es bastante menor.

Ian
fuente
2
  • Mejora la legibilidad de su código.
  • Normalmente tiene poco sentido seguir esta directriz si solo tiene pocas declaraciones de uso

  • Tiene más sentido separar el uso de declaraciones en secciones.

Por ejemplo:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

Si miro la clase, puedo ver instantáneamente que una clase determinada está usando el ensamblaje System.Web, así como nuestra plataforma y marco. Esto me da una idea aproximada de sus dependencias y complejidad.

Luego puede llevar esto un paso más allá y ordenar las declaraciones, pero creo que hace que el uso de las declaraciones sea menos legible, por lo que no recomendaría esto.

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
CodeART
fuente