¿Cuál es la principal ventaja de la dependency injection?
Opciones
- Produce menos líneas de código en todas las clases del sistema
- Los componentes reciben sus colaboradores de fuera, así que son fáciles de probar (Opción correcta)
- Hace que el programa sea más rápido en todos los casos
- Elimina la necesidad de escribir interfaces para los componentes
Respuesta
Los componentes reciben sus colaboradores de fuera, así que quedan poco acoplados y son fáciles de probar con fakes
Por qué
Sin DI, una clase crea lo que necesita dentro de sí misma (self.db = PostgresDB()), así que queda pegada a esa elección.
Con DI, la clase lo recibe de fuera (def __init__(self, db)). Quien la llama decide qué implementación pasar: la real en producción, un fake en los tests.
El Depends de FastAPI es un sistema de DI.
Recuerda
No crees tus dependencias dentro; recíbelas.