Acabo de comenzar a trabajar en un proyecto y estamos usando un diseño basado en dominio (como lo define Eric Evans en Diseño dirigido por dominio: abordar la complejidad en el corazón del software . Creo que nuestro proyecto es ciertamente un candidato para este diseño patrón como lo describe Evans en su libro.
Estoy luchando con la idea de refactorizar constantemente.
Sé que la refactorización es una necesidad en cualquier proyecto y sucederá inevitablemente a medida que cambie el software. Sin embargo, en mi experiencia, la refactorización ocurre cuando cambian las necesidades del equipo de desarrollo, no como la comprensión de los cambios de dominio ("refactorización para una mayor comprensión" como lo llama Evans). Estoy más preocupado por los avances en la comprensión del modelo de dominio. Entiendo hacer pequeños cambios, pero ¿qué pasa si es necesario un gran cambio en el modelo?
¿Cuál es una forma efectiva de convencerte a ti mismo (y a otros) que deberías refactorizar después de obtener un modelo de dominio más claro? Después de todo, la refactorización para mejorar la organización o el rendimiento del código podría estar completamente separada de lo expresivo en términos del código de lenguaje ubicuo. A veces parece que no hay suficiente tiempo para refactorizar.
Afortunadamente, SCRUM se presta a la refactorización. La naturaleza iterativa de SCRUM hace que sea fácil construir una pieza pequeña y cambiarla. Pero con el tiempo esa pieza se hará más grande y ¿qué pasa si tienes un avance después de que esa pieza es tan grande que será demasiado difícil de cambiar?
¿Alguien ha trabajado en un proyecto que emplea diseño impulsado por dominio? Si es así, sería genial tener una idea de esto. Especialmente me gustaría escuchar algunas historias de éxito, ya que DDD parece muy difícil de acertar.
¡Gracias!