169 похожих чатов

Всем здравствуйте. Помогите разобраться. Пытаюсь использовать сервис классы. Но в

гугле попадаются только статьи, где в один сервис класс пихают все методы, например create и update. И называют класс ArtickeService (как в лучших практиках рекомендуемых https://github.com/alexeymezenin/laravel-best-practices/blob/master/russian.md#%D0%91%D0%B8%D0%B7%D0%BD%D0%B5%D1%81-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0-%D0%B2-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0%D1%85, подразумевая, что в этом классе будут все методы для работы с моделью Article). При этом вроде промелькивают советы, что один сервис класс должен использоваться для одного действия. И вот дальше. Везде в примерах используется инъекция этого сервис класса в конструкторе контроллера. Опять же, если этот сервис класс универсальный, имеет смысл так делать, а если для каждого действия будет свой класс, наверное плохо для производительности создавать в конструкторе контроллера 10 объектов, когда в методе может 1 или 2 будут использоваться. Или я где-то ошибаюсь? Помогите разобраться.

12 ответов

24 просмотра

сервис слой - это не про ларавель, ищи общую литературу по архитектуре приложений. "один сервис класс должен использоваться для одного действия" один класс/метод должен иметь одну ПРИЧИНУ для изменения. SRP https://habr.com/ru/articles/465507/ "а если для каждого действия будет свой класс, наверное плохо для производительности" нет, не будет, а когда будет, тогда и обсудим. "создавать в конструкторе контроллера 10 объектов" в конструкторе контроллера лары никаких сервисов не надо инжектить, а в методах, тогда для каждого запроса и подтянешь нужные зависимости, и быть много их не должно обычно (если их много, штук 20, тогда тоже обсудим) https://laraway.github.io/bad-practices/#constructor-controller "если этот сервис класс универсальный, имеет смысл так делать" вполне нормально иногда оставить логику в контроллере, особенно если её там на 2 строчки и она больше нигде не нужна. особенно если это не крупное приложение.

а то что у тебя по ссылке вообще не читай, там не всё ок. здесь лучше: https://laraway.github.io/bad-practices/ https://laraway.github.io/conventions/

PSYTRGLES
сервис слой - это не про ларавель, ищи общую литер...

На счёт только для одного действия - давайте перейдём тогда на функции, зачем нам классы? SRP - OK, только я предпочитаю ArticlesCRUDService, ArticleSearchService и т.п.

Mikhail Kramer
На счёт только для одного действия - давайте перей...

это абстрактная тема. соблюдение солид это всегда будет граничить с холиваром, для разных примеров. ArticlesCRUDService - ну это не ооп, ты просто сгруппировал функции

PSYTRGLES
это абстрактная тема. соблюдение солид это всегда ...

А если будет ArticleUpdateAction, то намного лучше стало?

Mikhail Kramer
А если будет ArticleUpdateAction, то намного лучше...

немного да, если честно, уже конкретика

PSYTRGLES
немного да, если честно, уже конкретика

Ну я так пробовал, мне не очень понравилась эта куча классов на одну функцию. И почему бы тогда не использовать простые функции? Классы получаются только ради DI от ларки

Mikhail Kramer
Ну я так пробовал, мне не очень понравилась эта ку...

мы просто так можем дойти до CQRS, но я вообще не к тому, что у тебя плохой сервис, который объединил CRUD функции, может у тебя там в в итоге работает как адаптер или фасад, а я к тому, что сложно вести диалог на тему архитектуры, когда тебе надо сделать пару действий с моделью лары. Твой сервис переиспользуем? он тестируем? какие-то правки в нем НЕ могут поломать то, за что он не отвечает? значит всё хорошо.

Mikhail Kramer
Ну я так пробовал, мне не очень понравилась эта ку...

я хз, может в этом и нет проблем с точки зрения тру ооп....есть же все таки функторы там.....но как то вот странно для меня выглядит класс, который называется действием...

Дмитрий Кондрашов
я хз, может в этом и нет проблем с точки зрения тр...

Action же в основном юзают чтобы одни и те же действия переиспользовать в разных классах

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта