Size: a a a

2021 April 17

Ш

Шурик in symfony
нарушаешь инкапсуляцию, повышаешь каплинг

если вместо $person->isCitizenOfUsa() ты пишешь в сотне мест $person->getPassportCountry() === 'USA' и при этом через месяц окажется, что условие isUsa немного изменилось, то ты вместо одного метода поправишь 100 мест и при этом все клиенты должны знать точное значение константны 'USA'
источник

C

CvekCoder in symfony
Ооо, и тут напрашивается трейт)
источник

C

CvekCoder in symfony
Если серьезно, то если я много где это делаю, то могу написать класс, который умеет это делать. И везде его использовать
источник

ПГ

Павел Г. in symfony
А если стран 10, n? Не будет ли лучше isCountry(string) ну или vo/entity страны?
источник

C

CvekCoder in symfony
Но в исходную сущность со своим isUsa не лезть, потому что это частность, которая самой сущности не упала
источник

C

CvekCoder in symfony
Потому как open-close
источник

АЯ

Андрей Ява in symfony
Не надо оверхедить. Оверхед это тоже зло
источник

Ш

Шурик in symfony
а не пофиг ли на страну? почему сравниваешь со страной, а не проверяешь возможность?
не $citizen->isCountryMatches($countries), а например $blabla->isDocumentRequired($citizen)
источник

ПГ

Павел Г. in symfony
Тут самый главный смысл - не спрашивай данные, спрашивай результат /говори что делать
источник

C

CvekCoder in symfony
Есть ли добро в программировании?
источник

C

CvekCoder in symfony
Вот с анемичными моделями говорить - не особо получается
источник

Ш

Шурик in symfony
ну суть в том, что знать страну - никому нахер не нужно в 90% случаев
важно понимать применимо ли что-то вот к этому инстансу
источник

ПГ

Павел Г. in symfony
Тут уже контекст задачи надо знать. IsUsa как то очень странно и узко, имхо конечно
источник

C

CvekCoder in symfony
Бизнес-задача про страну из вашего адреса может появиться сильно позже, и менять интерфейс сущности из-за этого - путь к багам. Обычно это лучше реализовать в том классе, который это новое бизнес-требование реализует. И да, там где-то будет иф
источник

ПГ

Павел Г. in symfony
Кстати вот, в коде внутри метода required все равно надо будет как то обратиться к citizen и как то понять что usa
источник

C

CvekCoder in symfony
Ага, о том и речь. Как там без ифа вокруг гетера. Как глубоко его ни спрячь, но он будет
источник

ПГ

Павел Г. in symfony
If можно спрятать уже внутри сущности которая обладает данными.
источник

C

CvekCoder in symfony
Это про метод isUsa
источник

C

CvekCoder in symfony
Что не ок
источник

ПГ

Павел Г. in symfony
IsCountryMatch например
источник