Nella programmazione orientata agli oggetti, poiché utilizziamo classi e metodi in queste classi, quando implementeremo una determinata funzionalità, dobbiamo decidere dove appartiene , in altre parole, su quale classe appartiene .
Questo solleva domande come: "dovrei creare una nuova classe e aggiungerla qui" o "dovrei aggiungerla a una classe esistente".
Le cose principali di cui sono a conoscenza sono: (i) non esiste un modo giusto per farlo, ci sono molti modi possibili che finiscono per funzionare e (ii) implementare un modo e il refactoring successivo è normale.
In realtà, quando ho seguito lo sviluppo di ASP.NET Core su Github, ho visto alcune funzionalità spostarsi di tanto in tanto da qui a lì.
Il mio problema è il punto di partenza: implementerò una nuova funzionalità, conosco la logica che deve essere codificata, conosco le regole aziendali, non so dove collocarlo.
Conosco alcune teorie come SOLID e un po 'di DDD. Mi piace il DDD perché fornisce categorie di classi come "entità", "oggetti valore", "repository", "servizi di dominio", quindi sembra dare un punto di partenza.
La mia domanda è come usare tutto questo nella pratica. C'è qualche tecnica che aiuta a decidere dove (su quale classe) appartiene una determinata logica? Qual è il modo di pensare che dovrei adottare? La mia domanda è davvero questa: come dovrei pensare, qual è la linea di pensiero che devo seguire, per prendere questa decisione per iniziare (ovviamente non fare una scelta una volta per tutte, poiché questo può cambiare , ma almeno iniziare)?