Devo raggruppare tutte le definizioni dei file audio? O definirne alcuni localmente, se possibile?

1

Ad esempio, supponiamo che la mia applicazione abbia alcuni file audio, ora definisco tutti i riferimenti ai file audio in una singola classe:

public class SoundHelper{
    public static Sound buttonSound=new Sound("(some url)");
    public static Sound alertSound=new Sound("(some url)");
    .
    .
    .
    public static Sound pageChangeSound=new Sound("(some url)");

    public static void play(Sound sound){
        SomeLibrary.play(sound);
    }
}

public class DetailPageController{
    public void onPageChanged(){
        SoundHelper.play(SoundHelper.pageChangeSound);
    }
}

Più tardi, ho trovato che pageChangeSound è usato solo da DetailPageController. Quindi la mia domanda è, dovrei spostare la definizione di pageChangeSound in DetailPageController

public class DetailPageController{
    private static Sound pageChangeSound=new Sound("(some url)");
    public void onPageChanged(){
        SoundHelper.play(pageChangeSound);
    }
}

    
posta mmmaaa 09.10.2018 - 09:45
fonte

1 risposta

1

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.
risposta data 09.10.2018 - 12:14
fonte

Leggi altre domande sui tag