if на основании этой инфы
Что же криминального в таком ифе. Я вот например написал очередной класс-обработчик, который работает только для США (а проверяю ифом) - мне что, надо в сущность код дописывать (isUsa()) из-за этого?
нарушаешь инкапсуляцию, повышаешь каплинг если вместо $person->isCitizenOfUsa() ты пишешь в сотне мест $person->getPassportCountry() === 'USA' и при этом через месяц окажется, что условие isUsa немного изменилось, то ты вместо одного метода поправишь 100 мест и при этом все клиенты должны знать точное значение константны 'USA'
Если серьезно, то если я много где это делаю, то могу написать класс, который умеет это делать. И везде его использовать
А если стран 10, n? Не будет ли лучше isCountry(string) ну или vo/entity страны?
а не пофиг ли на страну? почему сравниваешь со страной, а не проверяешь возможность? не $citizen->isCountryMatches($countries), а например $blabla->isDocumentRequired($citizen)
ну суть в том, что знать страну - никому нахер не нужно в 90% случаев важно понимать применимо ли что-то вот к этому инстансу
Тут уже контекст задачи надо знать. IsUsa как то очень странно и узко, имхо конечно
Кстати вот, в коде внутри метода required все равно надо будет как то обратиться к citizen и как то понять что usa
Обсуждают сегодня