Size: a a a

2020 May 12

VT

Viktor TElless in PHP
ну в общем блин
идея хранить логику в сущности проста
ты хочешь в одном месте описать правила, по которым эта сущность создается и живёт
и не думать о том, что где-то кто-то может что-то в ней поменять неправильно
инкапсуляция, все дела
остальные части системы знают контракт и думают как оно там внутри
если ты делаешь ровно тоже самое в сервисе, а сущность просто структура, возникает закономерный вопрос, а зачем тебе лишний класс
источник

M

Maxim Kainov in PHP
Viktor TElless
можно допустить ошибку в валидаторе
можно забыть провалидировать
можно после валидации где-то еще какой-нибудь сеттер дернуть
много чего можно и хочется как-то всё это не допустить и жить без этого
После валидации зачем ее менять уже. Такие ошибки показывают, что у тебя проблема с кодом и его пониманием.
источник

VT

Viktor TElless in PHP
Maxim Kainov
После валидации зачем ее менять уже. Такие ошибки показывают, что у тебя проблема с кодом и его пониманием.
возвращаемся опять
пишите код без багов и всё будет хорошо
а еще лучше пишите один, чтобы точно всё помнить и не было новых людей, которые сломают что-то по незнанию
источник

M

Maxim Kainov in PHP
Viktor TElless
возвращаемся опять
пишите код без багов и всё будет хорошо
а еще лучше пишите один, чтобы точно всё помнить и не было новых людей, которые сломают что-то по незнанию
Так по не знанию много всего можно сломать, и не спасет ничего.
источник

VT

Viktor TElless in PHP
тесты спасут
а для этого они должны быть
а чтобы они были, их должно быть легко писать и поддерживать, иначе все забьют
а для этого надо нормально логику изолировать
источник

M

Maxim Kainov in PHP
Viktor TElless
тесты спасут
а для этого они должны быть
а чтобы они были, их должно быть легко писать и поддерживать, иначе все забьют
а для этого надо нормально логику изолировать
Тест спасет от сохранения невалидой сущности?
источник

DE

Dmitry Eliseev in PHP
Maxim Kainov
Так по не знанию много всего можно сломать, и не спасет ничего.
Вот инкапсуляция с инвариантом (когда все поля приватные и есть только строгие методы) всегда спасёт. В отличие от набора пабликов, в которые кто угодно и как угодно может любую ерунду присвоить.
источник

VT

Viktor TElless in PHP
Maxim Kainov
Тест спасет от сохранения невалидой сущности?
нормальная сущность не даст создать себя невалидной
и сделать тоже
источник

AZ

Artem Zakirullin in PHP
Viktor TElless
нормальная сущность не даст создать себя невалидной
и сделать тоже
Сущность ответственна за контроль своих инвариантов. Валидация зависит от контекста
источник

M

Maxim Kainov in PHP
Viktor TElless
нормальная сущность не даст создать себя невалидной
и сделать тоже
При создании ты передашь в нее невалидный параметр. Она сама себя на ошибки проверяет?
источник

DE

Dmitry Eliseev in PHP
Maxim Kainov
При создании ты передашь в нее невалидный параметр. Она сама себя на ошибки проверяет?
Да
источник

VT

Viktor TElless in PHP
Maxim Kainov
При создании ты передашь в нее невалидный параметр. Она сама себя на ошибки проверяет?
ну да
а вообще разговор слепого с глухим
если у тебя не болит, возможно команда небольшая\новых людей мало\проект небольшой и в целом нет особо смысла с этим запариваться
тот же доклад Марко больше про то, что если проект становится сложнее и больше, то делать лучше вот так, чтоб больно было не так сильно
источник

VT

Viktor TElless in PHP
а если логика буквально укладывается в геттеры-сеттеры, там есть правильный вопрос
зачем вам доктрина и база, возьмите гугл таблицы
источник

AZ

Artem Zakirullin in PHP
Viktor TElless
а если логика буквально укладывается в геттеры-сеттеры, там есть правильный вопрос
зачем вам доктрина и база, возьмите гугл таблицы
Если есть геттеры сеттеры, зачем ооп 🌚
источник

M

Maxim Kainov in PHP
Viktor TElless
ну да
а вообще разговор слепого с глухим
если у тебя не болит, возможно команда небольшая\новых людей мало\проект небольшой и в целом нет особо смысла с этим запариваться
тот же доклад Марко больше про то, что если проект становится сложнее и больше, то делать лучше вот так, чтоб больно было не так сильно
Я об этом тоже речь веду, хочу разобраться.
источник

VT

Viktor TElless in PHP
Maxim Kainov
Я об этом тоже речь веду, хочу разобраться.
ну всю пищу для ума тебе здесь уже написали минимум 3 человека :)
и тут не поймешь, пока либо не попробуешь, либо не начнет болеть
если у тебя нет проблемы, ты не поймешь зачем её решать
источник

VT

Viktor TElless in PHP
а вообще тезис простой
суть доктрины как раз в том, чтобы ты не думал о сущностях как о чём-то особенном
доктрина нужна сбоку, чтобы позволить тебе сохранять и доставать состояние этих объектов между запросами
вынеси мапинг в XML какой-нибудь, чтоб глаза не мозолил
это всё еще просто классы
и на них всё еще действуют солиды-хуёлиды
вот и подумай, почему они у тебя выглядят в итоге как дтошки, если ими не являются
почему логика не в них?
добавление "сервисного слоя" это как минимум просто лишнее действие
которое к тому же ведет к некоторым проблемам
источник

AZ

Artem Zakirullin in PHP
Viktor TElless
а вообще тезис простой
суть доктрины как раз в том, чтобы ты не думал о сущностях как о чём-то особенном
доктрина нужна сбоку, чтобы позволить тебе сохранять и доставать состояние этих объектов между запросами
вынеси мапинг в XML какой-нибудь, чтоб глаза не мозолил
это всё еще просто классы
и на них всё еще действуют солиды-хуёлиды
вот и подумай, почему они у тебя выглядят в итоге как дтошки, если ими не являются
почему логика не в них?
добавление "сервисного слоя" это как минимум просто лишнее действие
которое к тому же ведет к некоторым проблемам
Вот тут плюс
источник

M

Maxim Kainov in PHP
Dmitry Eliseev
Вот инкапсуляция с инвариантом (когда все поля приватные и есть только строгие методы) всегда спасёт. В отличие от набора пабликов, в которые кто угодно и как угодно может любую ерунду присвоить.
От этого спасет. Но если кто-то пытается присваивать сущности всякую ерунду и сохранять ее не валидируя, то этот человек явно не понимает что он делает, и очевидно может начудить в каком-нибудь другом месте. То есть, проблема в непонимании. И постоянными ограничениями ее не решить.
источник

SM

Sergey Milegov in PHP
Maxim Kainov
Спасибо! Интересный доклад. Но некоторые проблемы кажутся надуманными. Например, сущность должна быть всегда валидна, потому что если мы захотим ее сохранить, а она не валидна, то будет ошибка. Но зачем сохранять невалидированную сущность.
был случай. юзаем мы апиплатформу. делаем пост. сущность меняется. валидируется. не валидна. отправляем 400. еще был листенер, кот. че-то флашил на терминейте после долгих сложных вычислений, ну а иногда не флашил, зависит от контектса. ну и потом баг, что вот 400 и все сохранилось. чтоб починить пришлось прилично порефакторить.
источник