Ho avuto una discussione con il mio collega sul seguente problema.
Abbiamo un'applicazione in cui abbiamo bisogno di funzionalità di filtraggio. In qualsiasi schermata principale all'interno della barra di navigazione superiore, c'è un pulsante nell'angolo in alto a destra. Una volta toccato quel pulsante, apparirà una vista personalizzata come Vista di avviso scritta, dietro una vista di sovrapposizione nera semitrasparente. In questa vista modale, c'è una vista tabella delle opzioni, e puoi sceglierne una esclusivamente. In base alla selezione, una volta chiusa questa vista modale, viene filtrato l'elenco degli elementi nella vista principale. È semplicemente un filtro presentato in modo modale per filtrare la vista della tabella principale. Questo design dell'interfaccia utente è dettato dal dipartimento di progettazione, non posso farci niente, quindi lascia che sia accettato come premessa. Anche il pulsante principale del filtro nella barra di navigazione cambierà i colori per indicare che il filtro è attivo.
La domanda che ho riguarda l'implementazione. Ho suggerito al mio collega di creare una classe XYZFilter separata che
- essere un'istanza creata dal controller di visualizzazione principale
- acquisisce le opzioni di filtro
- gestiscono il salvataggio e il ripristino del suo stato, ovvero l'ultimo filtro selezionato
- fornisce le sue due viste: la vista di sovrapposizione e la vista modale
- essere l'origine dati per la tabella nella sua vista modale.
Per qualche ragione sconosciuta, il mio collega non è rimasto affatto colpito da questo approccio. Vuole semplicemente fare queste funzionalità nel controller della vista principale, forse non essendo abituato a farlo in passato in questo modo: - /
C'è qualche problema fondamentale con il mio approccio? Voglio
- mantieni il controller di visualizzazione piccolo, per non avere il codice spaghetti
- crea un componente riutilizzabile (da utilizzare all'esterno del progetto)
- hanno un approccio più disaccordo orientato agli oggetti.
- previene la duplicazione del codice in quanto abbiamo bisogno del filtro in due luoghi diversi ma sembra uguale in entrambi ..
Qualche consiglio?