Tengo una clase para la importación de productos desde el archivo CSV que requiere aproximadamente 7 parámetros. Esta es una información que definitivamente es necesaria para el importador.¿Es malo mezclar las inyecciones basadas en el constructor y las basadas en el colocador?
Todos estos parámetros tienen la misma duración. Al final debemos tener un Immutable Object.
Tenía demasiado miedo para enumerarlos todos en el constructor debido a su efecto sobre la legibilidad y decidí mover 3 de ellos a la inyección de setters. Pero obviamente no es una solución elegante.
Preguntas:
1) es la mezcla de inyecciones a base setter-a base de constructor y una mala práctica?
2) ¿Cómo se puede resolver este problema en particular?
Estaba pensando en aplicar la refactorización "Presentar objeto de parámetro" de Martin Fowler, pero hay un problema con esto.
4 Los parámetros se pueden mover fácilmente al objeto Parameter (customerId, projectId, languageId, etc.): todos los números enteros.
Otros 3 parámetros son un objeto que inyecto (se requiere para pruebas de unidad simuladas).
Esto dependerá de su contenedor DI ... algunos lo hacen más fácil que otros. – skaffman
@skaffmann: Estoy totalmente en desacuerdo. El uso de patrones DI no debe estar dictado por la elección de DI Container: el contenedor está ahí para ayudarlo, no para restringirlo. –
@Nikita: ¿por qué no introduces el objeto de parámetro completo e inyectas tus simulaciones en el parámetro? –