S
S
Sinus_3142022-04-04 10:21:07
Design patterns
Sinus_314, 2022-04-04 10:21:07

Why are fat controllers bad?

Всем привет!

Я пишу небольшие проекты на laravel и как многие начинающие разработчики закидываю логику в контроллеры. Но маленьких проектах, которые нужно быстро сделать и сдать это не вызывает никаких проблем, но сейчас я сажусь за серьезный проект, который буду пилить пару месяцев и сделать его хочется хорошо.

Я много раз читал и слышал, что толстые контроллеры – это ужасно, это антипаттерн, но не могу уразуметь почему. Валидация мы вынесли в Request, Вся логика обращения в БД в модели или репозитории, что остается в контроллере? одна строчка возвращающая view? Тогда зачем контроллеру вообще существовать, закинуть эту строку в роуты и все. В чем проблема написать в контроллере пару where, join, мб как-то по хитрому обработать данные?

Ну и предположим, что я осознал, почему в контроллерах логики быть не должно. Тогда просто переносим все в модель? зачем плодить репозитории (кроме как абстрагироваться от конкретной ORM) и остальные сущности?

Заранее всем спасибо за внимание и ответы!)

Answer the question

In order to leave comments, you need to log in

1 answer(s)
J
JhaoDa, 2022-04-04
@Sinus_314

В чем проблема написать в контроллере пару where, join, мб как-то по хитрому обработать данные?
Завтра появится задача сделать всё то же самое, но в консоли. Потащищ копипасту или начнёшь выносить общий код в реквесты, репозитории и прочие места?
Тогда просто переносим все в модель? зачем плодить репозитории (кроме как абстрагироваться от конкретной ORM) и остальные сущности?
Репозитории актуальны с паттерном DM и не актуальны с паттерном AR.
При всём при этом следует помнить, что паттерны — не догмы. Паттеры для человека, а не человек для паттернов. Если у тебя одностраничник на хайповую тему, который надо сделать быстро и жить ему месяца два, то не парься и пиши всё в контроллерах. Выживет — перепишешь.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question