Questa è una domanda di teoria per me solo per cercare di scrivere un codice migliore. Sono abbastanza nuovo quindi spero di usare termini come lo stato nel modo corretto.
Come dovrei pensare a questo problema? Sto codificando qualcosa che funziona, ma qualunque cosa faccia, sembra complicata, difficile da capire e difficile da modificare.
Sto riproducendo un video clip con un ID, voglio anche che sia in grado di passare dinamicamente a una visualizzazione in miniatura di quel video. Voglio essere in grado di impostare questo video anche in bianco e chiudere tutte le connessioni che non sono necessarie, sto cercando di fare tutto questo in modo efficiente - non riconnettersi al server quando non ho bisogno di ecc.
così ho -
connected - > on / off
ID video - > una stringa
modalità - > streaming video / anteprima / disabilitato
Spero che vedrai il mio dilemma con alcuni esempi -
Caso 1. L'utente inizia da capo e desidera visualizzare una miniatura del video "a"
-Connetti al server per "a", invia la richiesta per la miniatura, attiva l'oggetto miniatura.
Caso 2. L'utente inizia a visualizzare una miniatura del video "a" e desidera iniziare a guardare un flusso di video "b"
-compare le stringhe "a" e "b" - vedi che sono diverse. nascondi l'oggetto miniatura e cancella il suo buffer. Disconnettersi dal server per "a" e connettersi al server "b". avvia lo streaming video, attiva l'oggetto video, richiedi le miniature dal server, quindi viene caricato in memoria nel caso in cui l'utente desideri passare alla modalità miniatura.
Caso 3. L'utente sta guardando un flusso di "b" e desidera visualizzare una miniatura di "b"
-strarre le stringhe "b" e "b" - vedere che sono uguali e rimanere connessi al server, nascondere l'oggetto video e interrompere lo streaming, attivare l'oggetto miniatura, inviare un'altra richiesta al server per la miniatura ...
Tutte queste opzioni stanno facendo la mia testa, voglio che scelga il modo più efficace per passare da uno stato all'altro, ma tutte le diverse opzioni mi stanno confondendo. Immagino che sto cercando aiuto su quale sia il modo migliore per strutturare questo, perché quello che sto facendo al momento sembra molto confuso, finisco con un enorme albero di if annidati di un sacco di casi specifici e poi patch su dove va male.
if (connected but used to be disconnected) {
if (mode streaming but used to be thumbnail) {...
if (mode streaming but used to be streaming) {...
if (connected but used to be connected) {....
if (disconnected but used to be connected) {....
if (disconnected but used to be disconnected) {...
va avanti all'infinito ..