En Dependency Injection, programamos en contra de una abstracción.Evitando la violación del Principio de abstracción reutilizada
Desde mi experiencia, puedo afirmar que la mayoría de las abstracciones en una aplicación tienen una relación 1: 1 con sus implementaciones. Esto es una violación de Reused Abstraction Principle.
Marcos Seeman sugerido en algunos de sus mensajes que podemos tener una implementación de objeto nulo para las abstracciones con el fin de evitar RAP violación (Esta sugerencia de Mark Seeman podría ser mi inferencia. Por favor me corrija si estoy equivocado cita a Mark en esto). Mi pregunta aquí es
- ¿Cómo hacer la implementación de objetos nulos?
- ¿Está bien violar RAP?
Pruebas! Las pruebas son las que me hacen abstraer cosas de mis clases el 98% del tiempo. Y los simulacros/imitaciones se aseguran de que siempre haya al menos dos "implementaciones". Aún así se siente raro. No entendí tu último punto sobre "interacciones" ... ¿qué son las interacciones y qué no? – stmax
+1 dobles de prueba cuentan como implementaciones también –
@stmax: me doy cuenta de que no lo expliqué terriblemente bien, es difícil poner mi dedo en la diferencia. Si algo se siente como un * servicio * de alguna descripción (que incluye sistemas de archivos, etc.), entonces se siente como una interacción. Si se trata de "solo un contenedor de datos" sin ningún tipo de comportamiento complicado que debamos ignorar para las pruebas (por ejemplo, una colección), entonces no es necesario inyectarlo habitualmente. –