In " The Clean Code Talks - Unit Testing ", Miško Hevery afferma che "il minimo lavoro possibile dovrebbe essere fatto nei costruttori [per rendere più facilmente testabili le classi] ". Mi ha fatto riflettere sul modo in cui ho implementato il mio meccanismo di autenticazione degli utenti.
Dopo aver approfondito lo sviluppo di MVC tramite CodeIgniter, ho progettato la mia prima applicazione Web per eseguire l'autenticazione utente per risorse protette nei costruttori di controllori nei casi in cui ogni funzione pubblica in quel il controller richiede che l'utente sia autenticato.
Per i controllori con metodi pubblici che hanno requisiti di autenticazione misti, sposterei naturalmente l'autenticazione dal costruttore in ogni metodo che richiede l'autenticazione (anche se attualmente non ne ho bisogno).
Ho fatto questa scelta principalmente
- per mantenere il controller serrato e
- per garantire che tutte le risorse nel controller siano sempre coperte.
Per quanto riguarda la longevità e la manutenibilità del codice: data la struttura dell'applicazione, non posso prevedere una situazione in cui uno dei controller interessati avrebbe bisogno di un metodo pubblico che non richiedesse l'autenticazione dell'utente, ma posso vederlo come un potenziale inconveniente in generale con questa implementazione (cioè, che richiede un futuro refactoring).
Questa è una buona idea?