Size: a a a

2021 April 17

C

CvekCoder in symfony
Навероное тут наружу будет торчать метод, название которого передает смысл операции
источник

SP

Sergey Protko in symfony
окей, то есть тут не будет сеттеров
источник

SP

Sergey Protko in symfony
потому что сеттеры не работают для этой ситуации
источник

C

CvekCoder in symfony
Сеттер же про одно поле, а тут много (см. определение)
источник

SP

Sergey Protko in symfony
еще один пример типичного сеттера который сразу говорит о проблемах - setStatus. Есть ли место для таких вещей в коде?
источник

C

CvekCoder in symfony
Я вам не скажу за всю Одессу)...

Но как по мне, так статус - это больше про стейт-машины и напрямую их ставить довольно странно
источник

C

CvekCoder in symfony
Но инфы конечно оч. мало чтобы точнее ответить. Но странно если кто-то снаружи ставит объекту его статус
источник

C

CvekCoder in symfony
Он по идее сам с этим разберется, это обычно "внутренняя кухня"
источник

SP

Sergey Protko in symfony
ну то есть в этом случае разницы между сеттером и публичным полем нет. Так же как в ситуации когда люди лепят сеттеры на кейс где обновляются несколько полей. Или есть скажем 3-4 разные операции когда меняется разный набор данных.

Удобно ж хернуть пачку сеттеров и пусть клиентский код сам решает что он хочет обновлять а что нет. А мы потом просто обмажимся доктрин листенерами что бы updated at проставлять
источник

SP

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

C

CvekCoder in symfony
Все ли свойства надо покрывать сеттерами? Нет, конечно не все. Вообще сам стараюсь их избегать
источник

C

CvekCoder in symfony
Сеттер действительно дает больше контроля, но на этом работа с объектами не заканчивается конечно
источник

C

CvekCoder in symfony
И кучу всего пихать в сеттеры - это плохо и невыразительно с точки зрения реализации бизнес-задач
источник

SP

Sergey Protko in symfony
class Profile
{
   public function __construct(
       public string $name,
       public string $dob,
       public string $gender
   ) {}
}

$profile = new Profile(
   name: $name,
   dob: $dob,
   gender: $gender
);

$user->updateProfile($profile);


Вжух
источник

C

CvekCoder in symfony
Ну и кстати для кейса с валидацией отриц. значений лучше-таки юзать констрейнты и валидатор симфони
источник

SP

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

SP

Sergey Protko in symfony
я хз почему возможность сделать доп валидацию какую наивную приписывается в плюсы...
источник

C

CvekCoder in symfony
Но приравнивать это к паблик-свойствам имхо неверно. Сеттер - это след. уровень эволюции относительно паблик. Но он не финальный конечно, там еще потолок не близко)
источник

SP

Sergey Protko in symfony
источник

SP

Sergey Protko in symfony
вот еще пример интересный)
источник