Ho appena iniziato a lavorare su un progetto e stiamo utilizzando un design basato su domini (come definito da Eric Evans in Design basato sul dominio: affrontare la complessità nel cuore del software . Credo che il nostro progetto sia certamente un candidato per questo modello di design come lo descrive Evans nel suo libro.
Sto lottando con l'idea di un costante refactoring.
So che il refactoring è una necessità in qualsiasi progetto e avverrà inevitabilmente mentre il software cambia. Tuttavia, nella mia esperienza, il refactoring si verifica quando cambiano le esigenze del team di sviluppo, non come la comprensione dei cambiamenti del dominio ("refactoring to greater insight", come Evans lo chiama). Sono più interessato alle scoperte nella comprensione del modello di dominio. Capisco di apportare piccole modifiche, ma cosa succede se è necessario un grande cambiamento nel modello?
Qual è un modo efficace per convincere te stesso (e gli altri) che dovresti rifattorizzare dopo aver ottenuto un modello di dominio più chiaro? Dopotutto, il refactoring per migliorare l'organizzazione del codice o le prestazioni potrebbe essere completamente separato da quanto espressivo in termini di codice della lingua onnipresente. A volte sembra che non ci sia abbastanza tempo per il refactoring.
Fortunatamente, SCRUM si presta a refactoring. La natura iterativa di SCRUM rende facile costruire un piccolo pezzo e cambiarlo. Ma col tempo quel pezzo diventerà più grande e cosa succederebbe se avessi una svolta dopo che quel pezzo è così grande che sarà troppo difficile cambiare?
Qualcuno ha mai lavorato a un progetto che utilizza la progettazione basata su domini? Se è così, sarebbe bello avere qualche idea su questo. Mi piacerebbe soprattutto ascoltare alcune storie di successo, dal momento che DDD sembra molto difficile da ottenere.
Grazie!