Molto spesso il tuo codice avrà una struttura che può essere organizzata su due assi. Ad esempio, è possibile strutturare un'applicazione per feature / componente / verticale o per livello / preoccupazione trasversale. È possibile strutturare una gerarchia di classi per classe o per comportamento. Io lo chiamo un "problema di matrice" perché puoi leggere le stesse informazioni per riga o per colonna. Come organizzi il tuo codice influisce su quale asse può essere facilmente esteso.
Qui puoi organizzare i tuoi suoni
- da preoccupazione trasversale, mantenendo tutti i suoni insieme, o
- per controller, mantenendo il suono insieme al codice che utilizza questo suono.
Nessun approccio è giusto o sbagliato. Ti offrono un diverso tipo di panoramica:
- Se organizzi una preoccupazione trasversale, puoi vedere tutti i suoni nel tuo sistema a colpo d'occhio.
- Se organizzi per controller, puoi immediatamente vedere tutti i suoni che il controller usa, senza dover cercare in altre classi.
E richiedono diversi tipi di impegno per le modifiche:
- Se organizzi un problema trasversale, cambiare il suono di un controller o aggiungere un nuovo controller può richiedere modifiche all'assistente del suono.
- Se organizzi per controller, cambiare la modalità di memorizzazione e riproduzione dei suoni richiederà modifiche a tutti i controller.
Questa è solo una diversa interpretazione della singola responsabilità di ciascuna parte:
- È la sola responsabilità del sound helper fornire tutti i suoni?
- Oppure fa parte della responsabilità unica di un controller fornire i suoni di cui ha bisogno?
Questa scelta è in gran parte una questione di gusto personale ed esperienza. Ma c'è una linea guida strong:
Code that changes together, stays together.
Quali tipi di modifiche vedranno il tuo progetto in genere?
- Se aggiungi frequentemente nuovi controller con nuovi suoni, è possibile che il suono come parte del controller sia migliore.
- Se la maggior parte delle modifiche apportate ai controller non tocca i suoni, mantenere i suoni separati potrebbe essere migliore.