¿Tener muchas declaraciones de uso / importación indica un mal diseño o un olor de código?

13

Por lo general, veo algunas declaraciones de uso en la parte superior del archivo de clase. Ejemplo:

using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;

Pero en un proyecto en el que estoy trabajando, en varias ocasiones veo 20 o más usos / importaciones en un archivo de clase. ¿Es este mal diseño? Parece que las clases diseñadas para hacer una cosa solo deben depender de unos pocos componentes.

    
pregunta Jon Raynor 23.03.2016 - 18:52

2 respuestas

21

Puede indicar un mal diseño, sí. Puede ser que la clase que está mirando esté haciendo demasiadas cosas, pero también puede significar que los espacios de nombres que está importando en realidad están más acoplados de lo que implica la separación de espacios de nombres. Esto puede deberse a un ingeniero excesivo o una abstracción excesiva, pero también podría ser un diseño que no se alinee bien con el uso.

Dicho esto, es un olor: a veces te lleva a algo malo ya veces es solo una falsa alarma.

    
respondido por el Telastyn 23.03.2016 - 19:11
2

Una clase no debe ser más grande ni más pequeña de lo que se necesita para proporcionar una función deseada.

En una aplicación, tengo una clase de cifrado que tiene un trabajo: cifrar datos. Entre la funcionalidad principal, el registro y el manejo de excepciones, el entorno requiere 11 importaciones distintas de espacio de nombres para realizar este único trabajo.

Me resulta difícil decirme "minimizar las importaciones". O para juzgar el éxito de mi clase únicamente contando el número de espacios de nombres importados. No puedo usar esto de manera justificada, en forma aislada, como una indicación del éxito de una clase. Para mí, 'importaciones' son los medios para el fin de la clase. Si el trabajo de la clase está bien definido, todo lo demás dentro del sistema de soporte, incluidas las importaciones, se hará cargo de sí mismo.

    
respondido por el paulstgeorge 29.03.2016 - 20:41

Lea otras preguntas en las etiquetas