Часто читал, что логика должна быть в сервисах, в сущностях только данные. Но, вроде как, grasp считает иначе
приемлимо, предпочтительно, если логика декомпозирована так что бы не случались вещи о которых так любят рассказывать любители "в сущностях только данные". Есть у тебя была сущность user и ты туда сложил всю логику у тебя просто получится god object. Если же ты раздробишь эту сущность по операциями то все станет куда интереснее но появится необходимость координировать операции которые затрагивают более одной сущности. И вот это обычно сложно но окупается на больших масштабах
Ну вот мне тоже так кажется. Спасибо!
SRP
Этот класс отвечает за геттеры и сеттеры, сюда логику не добавляем?
зависит от философии архитектуры и от того, что ты считаешь объектами
Что srp? Srp не про данные отдельно процедуры отдельно
я про данные и не говорил. Просто логика размещенная в моделях часто приводят к нарушениям SRP.
srp нарушается не от факта наличия логики в сущностях а в том как сущность декомпозирована. То есть да можно сделать так что одна сущность будет содержать в себе разную логику так что будет нарушаться srp. но тебя никто не заставлял этого делать. я там расписывал чуть вот про это что мол "дробить дополнительно сущности" и пару видосов как дробить и на что смотреть
дык я и не тебе писал, а автору вопроса
нууууу по сути просто структура данных не влияет на srp, там проблемы посерьезнее вроде глобального а иногда поталогического каплинга...
очень зависит от того, как вы построили своё приложение. если у вас есть объекты, которые оперируют “некими данными” - то тогда эти самые данные не должны ничего уметь, они просто будут. и тут как раз в пригоде становятся анемичные модели которые сами себе ДТО. если у вас объектами являются как раз сущности данных - то тут уже наоборот, количество обслуживающих сервисов должно максимально уменьшится, а сервисов, модифицирующих сущность вообще не должно существовать, всё поведение складывается в саму сущность. как-то так.
и везде есть проблема куда важнее, сошлюсь на Сергея в обоих вариантах есть риск напороться на проблемы, если выкроить эти объекты без опоры на прцоессы
ну так идеального решения на все случаи жизни не существует, сильвербуллета нет =)
Обсуждают сегодня