Android MVC con l'attività come controller?

0

In un progetto Android, non vedo come la seguente architettura possa essere considerata MVC.

Il team ha detto:

  • Le app Android sono fondamentalmente MVC
  • il controller è l'attività Android.
  • la vista MVC è la vista Android.

Questa non mi sembra un'architettura MVC corretta,

quindi non sono stato d'accordo perché:

  • gestiscono gli eventi di input nella loro vista Android e agiscono direttamente sul modello
  • poi di nuovo alcuni input sono gestiti nell'attività ...
  • che significa che l'attività e la vista di Android sono ingombranti con le responsabilità di MVC Controller / Visualizza
  • la Visualizzazione Android non solo disegna / visualizza il modello ma contiene logica e pertanto non è facilmente intercambiabile
  • ci sono diversi motivi per cui ciascuna delle classi deve cambiare

Ho completamente frainteso l'architettura MVC? L'unica cosa che vedo qui è che hanno sicuramente un modello. Ma questo è tutto su cui posso essere d'accordo.

off topic: Recentemente ho iniziato a lavorare come studente e sono all'inizio dei miei studi di CS e ho bisogno di rassicurazioni perché sono un effim noob. Tutto ciò che ho imparato sembra essere ignorato in questa compagnia. Nessun build giornaliero o test di unità, nessun commento, nessuna documentazione. Quando parlo con il supervisore, non ne hanno bisogno.

    
posta hatschepsut 04.07.2017 - 11:08
fonte

2 risposte

2

Un progetto Android ben costruito è di solito un buon esempio dell'architettura MVC.

they handle input events in their android view

...

the Android View does not only draw / display the model but contains logic

Quando si conformano alle linee guida di Android, questo non succede. Definisci il codice per gestire l'input dell'utente in un'attività (o un frammento), non nella vista stessa. Dovresti creare una sottoclasse di una vista per implementarla; a meno che il team non utilizzi molti controlli auto-progettati, questo semplicemente non accade.

Ciò che può accadere è noto (in iOS, ma lo stesso vale per Android) come Sindrome di Massive View Controller . Per esempio. è molto comune vedere il codice per la comunicazione con un servizio (web) esterno nell'Attività, mentre il codice di rete dovrebbe essere messo all'esterno dell'architettura MVC.

    
risposta data 04.07.2017 - 11:20
fonte
0

La tua domanda mescola teoria e pratica.

In teoria un'attività può essere vista / implementata come il controller sottile di un MVC in cui l'intenzione specifica di Android è qualcosa di simile a un URL di app web.

In realtà molte app (la maggior parte?) Android sono implementate dove un sacco di codice è all'interno dell'attività e non è separato in diversi livelli specifici MVC. Questo non è MVC.

Le mie app Android (e probabilmente anche molte altre) solo separano il modello dalla GUI ma non separano la vista dal controller.

Secondo il mio parere discutibile, l'utilizzo di MVC o MVVM non è utile nel contesto Android. Nella pratica programmazione Android non vedo alcun vantaggio nel suddividere la GUI in vista e controller o in view e viewmodel. Questo potrebbe essere diverso se vuoi fare un test unitario di vista / controller / viewmodel che non faccio.

    
risposta data 05.07.2017 - 10:45
fonte

Leggi altre domande sui tag