websitedev
@websitedev
Веб-разработчик. Разрабатываю сложные сайты.

Какие архитектурные решения можно применить?

Выполнил тестовое задание для компании, получил следующую обратную связь "отсутствуют архитектурные и структурные решения для бизнес логики".

какие архитектурные и структурные решения можно применить в этом случае. Так же приветствуется аргументированная критика кода. Проект написан на Laravel.

ссылка на репозиторий
  • Вопрос задан
  • 743 просмотра
Пригласить эксперта
Ответы на вопрос 3
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
1. Нет деления по слоям из DDD. Нужно отделять бизнес логику от инфраструктуры. Ответственно контроллерах минимум кода и никакой логики.
2. Анемичные сущности, которые не имеют контроля над своим состоянием агрегата.
3. Сущности знают про то где они хранятся. Если завтра мы начнем хранить данные в другом месте, то ваш код придётся переписывать.
4. Про структурные паттерны можете почитать тут: https://refactoring.guru/ru/design-patterns/struct.... Там есть примеры на PHP.

В целом могу сказать, что код пишется для человека, а не для машины. Поэтому не нужно бездумно писать код и раскидывать всё в разные папки по всему проекту. Выделяйте модули и ложите всё рядом с ним. Можете почитать про модульный монолит.

Например, у вас Request размазан по разным папкам: Events, Models, Listeners и т д. Вам завтра скажут вынести модуль заявок в отдельный сервис или вообще его удалить. Вместо того чтобы удалить одну папку, то вам нужно во всех папках найти где есть Request. Конечно, это не удобно. Не говоря о том, то вся логика, в том числе и бизнес логика хранится по всему проекту. И это у вас простой код. А что если будет 100 разных модулей. С вашей структурой вы точно увязните. Плюс у вас будет куча конфликтов при разработке. Нельзя за каждым программистом закрепить папку, за которую он отвечает. Каждому программисту придётся лезть в соседнюю попку, потому что они общие. Ревью делать тоже сложно.
Ответ написан
У тебя сейчас вся логика в контроллерах написана.
Видимо, оценивающий хотел увидеть разделение.

А вообще подобные вопросы надо задавать тому, кто оставил замечание
Ответ написан
lenk0belk0
@lenk0belk0
программироваю
Арамаис Мирзоян посмотрите в эту сторону https://github.com/faisalarbain/decouple-entitiy-f..., тут дан пример реализации паттерна репозиторий на примере ларавеля
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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