Size: a a a

2021 October 13

✨Basic_Instinct✨ in symfony
это номер страницы в книге?
источник

ПГ

Павел Г. in symfony
Да
источник

ПГ

Павел Г. in symfony
В то же время уникальный id внутри книги
источник

SP

Sergey Protko in symfony
смотри на lack of cohesion метрику класса, хз. кто тебя знает правильно или нет. мы ж ничего не знаем про инварианты и т.д. выглядит как тупой круд а значит "любой вариант будет работать"
источник

SP

Sergey Protko in symfony
но по сути book это коллекция страниц че, может быть и нет никакого book. может быть есть просто book id 🙂
источник

SP

Sergey Protko in symfony
нету правильно не правильно, есть работает не работает в конкретной ситуации. ну или лучше хуже в конкретной ситуации
источник

ПГ

Павел Г. in symfony
Ммм понятно :) Ну просто вариантов много как сделать. Передать page внутрь, передать просто массив. Вооще сделать в хэндлере все это )
источник

ПГ

Павел Г. in symfony
Но должен же быть класс, который решает - страница уже есть - надо изменить , или ее нет - надо добавить.
источник

ПГ

Павел Г. in symfony
Меня тут больше вопрос, как работать с коллекциями элементов. Как и где их обрабатывать.
источник

ПГ

Павел Г. in symfony
Ведь setPages(...Page) - как то не очень
источник

SP

Sergey Protko in symfony
смотри что будет удобнее для клиентского кода.
источник

SP

Sergey Protko in symfony
скажем если ему надо передавать page ты платишь за это тем что "ему надо знать про page" если page при этом предоставляет удобный интерфейс, фабрику, билдер и в целом еще какие плюшки для валидации предоставляет и за счет этого всего "удобнее потому что более прозрачный дата флоу" - ну значит так лучше
источник

SP

Sergey Protko in symfony
"должно быть удобно и легко проследить что происходит".
источник

SP

Sergey Protko in symfony
может быть, зависит от контекста в котором эта операция нужна
источник

SP

Sergey Protko in symfony
ты ж не в вакууме штуки проектируешь, они где-то для чего-то юзаются
источник

SP

Sergey Protko in symfony
и вот "где-то для чего-то" это клиентский код твоих штук и клиенту должно быть удобно
источник

✨Basic_Instinct✨ in symfony
я не так давно, после беседы с Сергеем, перешла на следующую модель своих приложений, опишу на твоем примерее...
делаем сущность Page{id,  bookId, texId}, отделяем текст в сущность к примеру TextPage{id, text}
TextPage - всегда создаем, никакого remove, только обновляем texId в сущности Page

какой профит - мы можем откатить изменения, мы можем отследить изменения, никакой конкуренции, ну и кучу еще чего можем связать
источник

ПГ

Павел Г. in symfony
@fes0r спасибо :)
источник

✨Basic_Instinct✨ in symfony
также методов на порядок меньше, без всяких там update, remove? b ,tufybz gj rjkktrwbzv
источник

ПГ

Павел Г. in symfony
Спасибо. А вмсысле нет конкуренци?
источник