Domanda

Sto lavorando al mio primo vero progetto ASP.NET MVC e ho notato che il controller ho lavorato in è sempre piuttosto grande. Questo va apparentemente contro la miglior pratica di tenere i controller sottile.

Ho fatto un buon lavoro mantenendo la logica di business fuori dai controllori. Io uso un livello separato per questo. Ogni azione richiama in primo luogo un metodo nel livello di business e coordina il risultato finale in base a se il ModelState è valido.

Detto questo, il controllore ha un gran numero di metodi di azione. Intuitivamente, vorrei rompere il basso del controller in sotto-controller, ma non vedo un modo semplice per farlo. Potrei semplicemente rompere il controllore giù in controller separati, ma l'ho sciolto la gerarchia e ci si sente un po 'sporco.

E 'necessario refactoring un controller con un gran numero di azioni sottili? Se sì, qual è il modo migliore per fare questo?

È stato utile?

Soluzione

In primo luogo, quando si sente che è buono per mantenere il codice di controllo al minimo, si tratta per mantenere ogni metodo di azione il più sottile possibile (mettere la logica invece in classi di lavoro, non in Vista e ViewModels.) sembra che stai facendo questo, che è grande.

Come per avere "troppi" metodi d'azione, si tratta di una chiamata in giudizio. Si potrebbe effettivamente essere un segno di buona organizzazione, che si sta avendo ogni concentrare l'azione su una cosa. Inoltre, forse si sta utilizzando azioni specificamente per l'utilizzo con RenderAction? E, potrebbe essere solo la natura della soluzione che ci sono molte cose da fare in relazione al tema del vostro controller.

Quindi, la mia ipotesi è che probabilmente stai bene. Tuttavia, per essere sicuri, su carta nota rompere il controller in 2 o 3 controller, e delineare come le tue storie avrebbero lavorato in movimento dall'azione all'azione. E se si scopre che il flusso di lavoro funziona con più controller, si dovrebbe rompere fuori. Soprattutto se si sta andando ad essere l'aggiunta di questa funzionalità in seguito. Quanto prima la pausa fuori il meglio.

Altri suggerimenti

Buona domanda.

Credo che un controller "sottile" può ancora bisogno di essere "largo" o "alto" a seconda di come si vuole allungare l'analogia. Se non v'è alcun modo pulito per rompere un controller che ha bisogno di fare un sacco di cose, non credo che sia un problema, purché ogni azione si concentra esclusivamente sulla preparazione Visite / ViewModels ed è di dimensione del codice limitate.

Un'altra opzione strutturale avete sta introducendo classi parziali per raggruppamenti logici di azioni. E usando qualcosa come vscommands per raggruppare i file insieme.

Dubito che chiunque può venire con un numero magico di azioni che ti dice quando è una buona idea per rompere roba e introdurre nuovi controller, in realtà dipende proprio dominio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top