Che cosa ti fa decidere di creare un nuovo controller invece di aggiungere più azioni a un controller esistente? Dove tracciare la linea e PERCHÉ?Più controller ma meno azioni o meno controller ma più azioni
risposta
Ciò che certamente non è entrare nell'immagine è il numero di azioni¹ - almeno nel senso che "oh, ho più di 50 azioni in questo controller, iniziamo un altro".
La linea guida² deve essere: i controllori sono un gruppo logico per azioni che operano sullo stesso tipo di oggetto (lo stesso tipo di modello potrebbe essere una definizione migliore). Se accade che tu abbia un modello così ricco di funzionalità che ci siano 30 azioni separate che possono essere eseguite su di esso, vai avanti e mettile nello stesso controller.
Dall'altro lato della medaglia: se si dispone di modelli semplici e ci si ritrova a scrivere controller con solo poche azioni ciascuno, questo dovrebbe essere un motivo per sentirsi bene riguardo alla manutenibilità dell'applicazione piuttosto che un motivo per preoccuparsi .
Note:
¹ Naturalmente, un controller con che molte azioni è una bandiera rossa per possibile abuso di codice in modo che il numero di dovrebbe entrare in considerazione - non solo come una sorta di regola dura .
² Ed è davvero una linea guida - l'obiettivo qui è quello di costruire un sistema sostenibile, non seguire alcune scritture religiose.
Il fattore principale che dovrebbe determinare quando creare un nuovo controller è la logica/funzionalità che eseguono. Ti consigliamo di fare in modo che si separate concerns:
public class ProfileController { }
public class MainController { }
public class AccountController { }
public class ShoppingCartController { }
Ciascuno dei controllori precedenti sono usati per coordinare la comunicazione tra i loro servizi di dominio corrispondenti/modelli e le loro opinioni.
Come regola generale, mantengo tutta l'azione il più semplice possibile, se diventano grandi o troppi, vedo se riesco a creare funzioni di aiuto.
Ho un controller per entità DB se necessario.
Così, per esempio vorrei avere un controller utente, un controllore di spesa, un elemento regolatore ecc ecc
Non penso ci siano regole specifiche. Si tratta solo di mantenere tutto logico. Se è logico per te allora questo è generalmente tutto ciò che conta, a meno che tu non sia in una squadra, quindi deve essere logico per tutti.
Spero che questo aiuti.
"I controller sono un gruppo logico per azioni che operano sullo stesso tipo di oggetto (lo stesso tipo di modello potrebbe essere una definizione migliore)". Suona come 1 entità controller 1? – Elisabeth
@Elisa: Suona così, ma c'è anche la possibilità che le entità siano così strettamente correlate che appartengono davvero allo stesso controller. – Jon
Cosa rende due entità chiuse in modo tale che entrano nello stesso controller? – Elisabeth