Sto progettando un sistema al momento usando MVC (con Laravel, se questo è importante) e sto cercando di decidere il modo migliore per architettarne una parte.
Un'analogia, puoi guardarla in questo modo:
Esistono post di blog e ogni post di blog può avere tre diversi tipi di commenti. Ogni tipo di commento è completamente diverso dall'altro e viene visualizzato su una pagina separata.
Quindi per esempio, supponiamo che un tipo di commento sia plain text
. Ci sarebbe una pagina di testo in cui tutti i commenti in testo semplice per quel blog potrebbero essere visualizzati, modificati, creati, ecc.
C'è un altro tipo di tipo di commento chiamato Twitter
. Ci sarebbe una pagina separata in cui tutti i Tweet pubblicati su quel post potrebbero essere visualizzati, modificati, creati, ecc.
E così via.
Il mio primo istinto era quello di provare e registrare tutti questi diversi tipi di commenti in un CommentController con un modello di commento, quindi leggere il CommentType e elaborarli in modo appropriato, salvandoli nella tabella corrispondente per quel CommentType, mostrando il giusto modulo per quel CommentType, ecc.
Ma sarebbe meglio avere un CommentController e modello diverso per ogni tipo? Cioè PlainTextCommentController / PlainTextComment Model e TwitterCommentController / TwitterComment Model?
Una parte di me ritiene che sia una cattiva pratica, perché sembra così inefficiente, ma non posso negare che migliorerebbe la leggibilità del codice.
Forse non ha bisogno di essere ottimizzato per usare intelligentemente un Controller, cercando di dargli la responsabilità per ogni tipo di commento. Forse sarebbe meglio dividere tutto, in modo pulito e chiaro?
Non sarebbe una cattiva pratica farlo?