Is creating methods such as isUserAdmin() bad practice?
È, anche se non è tanto che questo metodo sia una cattiva pratica, ma piuttosto che usare una classe genitore come una discarica per i metodi che vuoi condividere con gli oggetti figli ma che non hanno alcuna relazione particolare con l'un l'altro in termini di comportamento è una cattiva idea.
Se il metodo era una funzionalità di base di tutti i controller, allora metterlo nella classe genitore è una buona idea. Ma se è solo un metodo di utilità che alcuni controller potrebbero utilizzare, la classe genitore non è il posto giusto.
Non vuoi che il tuo genitore si riempia di metodi che i bambini potrebbero o non potrebbero aver bisogno a seconda di cosa fanno. Un gruppo di classi figlio potrebbe utilizzare questo metodo isUserAdmin, ma molte potrebbero non farlo.
Mantenere la classe controller piccola e contenente metodi specifici che verranno utilizzati da tutti i controller. Se hai un comportamento che alcuni controller potrebbero utilizzare, usa questo composizione piuttosto che ereditarietà . L'ereditarietà è solo per il comportamento condiviso da tutti i bambini.
Se hai alcuni controller che devono cercare se l'utente è un amministratore e non vuoi reimplementare questo codice in ogni oggetto (che sei corretto non voler fare), crea un oggetto che contiene questo comportamento che puoi dare ai controllori quando vengono creati.