L'applicazione web Python (Flask) ha una grande porzione di messaggi email / SMS generati da modelli, tradotti da Flask-Babel.
A mio avviso, avere costanti letterali per il messaggio nelle viste, tra le altre logiche di visualizzazione e chiamate agli altri livelli, non è elegante: le viste sono lì per rendere l'html o per servire chiamate ajax, non per rendere la posta / SMS al contemporaneamente. I letterali dei messaggi nei modelli sembrano ancora più brutti, sebbene possano sembrare appartenere a loro.
Tuttavia, l'alternativa di estrapolare funzionalità relative ai messaggi in qualche altro modulo o pacchetto può sembrare troppo artificiale, perché rende più difficile comporre il messaggio, potrebbe essere necessario includere molti parametri negli alls, rendendo firme ingestibili. L'approccio di emissione / gestione degli eventi è solo una variazione di questo (non sono sicuro che possa essere buono?).
Quale potrebbe essere un buon modo per mantenere pulito il codice della vista e allo stesso tempo non rendere la distinzione troppo artificiale?
Per un semplice esempio, il form-controller potrebbe aver bisogno di inviare un messaggio di conferma (o anche più di uno) nel caso in cui il modulo sia validato e i dati ricevuti e memorizzati nel database. Ci possono essere molti dettagli coinvolti (nomi, date, bandiere, ecc.) Nel rendering dei messaggi. Come può essere fatto elegantemente?
Personalmente, penso che avere un pacchetto separato solo per la messaggistica sia abbastanza simile all'applicazione web di strata view-templates. E potrebbe anche avere vantaggi nella testabilità. Meno sicuro sull'utilizzo dei meccanismi degli eventi per far sì che i messaggi vengano inviati. Forse, mi manca qualcosa di ovvio già inventato?