Dalla Gladiatori Fest, Simone Chiaretta ci indica la retta via:
- Rimuovi AccountController (creata dal template MVC)
- Isolate i controller dal mondo esterno (applicazione non testabile, applicazione poco malleabile)
- Usate un IOC Container
- No Magic String (non usare ViewData, creare un viewModel per ogni view)
- Createvi delle convenzioni pesonali (Controller e magari View implementano una vostra classe base)
- Fate attenzione agli HTTP Verbs (Pattern PRG: view invia i dati in post, controller valida, pagina in GET mostra i risultati) (Visualizzte i dati in GET, modificateli col post) [AcceptVerbs(HttpVerbs.Post)]
- DomainModel != ViewModel (Dati+comportamenti != solo dati) per il mapping usare AutoMapper => Mapper.Map<Post, ShowPostModel>(post)
- Usa le Action per dati "condivisi" (Action Filters) Definiti come attributi permettono di eseguire codice, gli action filters carucano i dati per le partial view che mostrano i dati caricati dagli action filters
- Non usare il code-behind (MAI)
- Scrivi HTML quando puoi
- Se c'è un if usa l'htmlhelper, le view non devono avere logica, solo if e foreach, quando possibile nasconderli in html helpers
- Scegli con cura il View Engine (WebFormViewEngine non è il migliore possibile, scegliete quello che fa per voi) Ad esempio Spark View Engine, il flusso è dominato dall'HTML, solo un templating engine, emette PDF, interpreta i template anche in Javascript