Después de varios años siguiendo la mala práctica heredada de los "arquitectos" en mi lugar de trabajo y pensando que debe haber una mejor manera, recientemente he estado leyendo sobre TDD y DDD y yo Creo que los principios y las prácticas encajarían perfectamente en la complejidad del software que escribimos.TDD, DDD y encapsulación
Sin embargo, muchas de las muestras de TDD que he visto llaman un método en el objeto de dominio y luego prueban las propiedades del objeto para garantizar que el comportamiento se ejecute correctamente.
Por otro lado, varias personas respetadas en la industria (Greg Young, lo que es más notable con sus charlas sobre CQRS) abogan por encapsular completamente cada objeto de dominio mediante la eliminación de todos los 'captadores'.
Mi pregunta por lo tanto es: ¿Cómo se prueba la funcionalidad de un objeto de dominio si está prohibido recuperar su estado?
Creo que me estoy perdiendo algo fundamental así que por favor siéntete libre de llamarme idiota y aclararme, cualquier orientación sería muy apreciada.
Hah, quería leer un poco más sobre este principio "sin captación" después de leer esta publicación ... y esta publicación fue el primer resultado de google. –
Supongo que estaba buscando un nombre para el patrón que había visto discutido en otra parte. Inicialmente, vi un video sobre la separación de consultas de comandos que abogaba por un dominio de solo escritura y una ruta alternativa para consultar el almacén de datos. Luego, leí algunos artículos más en los que se discutían los captadores que violaban la encapsulación, etc. ¿Es posible que esos términos produzcan mejores resultados de búsqueda? – Justin
De su comentario, creo que es probable que lo que escuchó fue "no-establecedores". Mucha gente piensa que los setters violan la encapsulación.De hecho, estoy de acuerdo en general en que se usan en exceso, pero siguen siendo útiles y necesarios en muchos casos. –