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