Не правильно, делать валидацию в сеттере, валидация это слой бизнес логики приведу
простой пример есть пользователь у него есть поле возраст при регистрации мы валидируем его что бы н момент регистрации пользователь был старше 18 лет.
А например админ когда создает пользователей мы это пропускаем. Если мы воткнем валидацию в сеттер то нам придется объяснять объекту в каком сценарии он сейчас находится. Это протекание абстракции когда объект знает лишнее.
у классов есть внутренние состояния. Например класс который загружает файл с диска и сжимает его например, может хранить хендлер на файл. И очень было бы странно давать всем возможность его изменять.
Вы сейчас с кем спорите. Я указал на 2 самых вероятных сценария. Понятное дело, что статика тоже может не работать, а сайт с бэком может частично работать. Но слыша стук копыт не думай о зебрах. Вы сейчас даже не зебр вспомнили а единорогов.
Ну схема проста. Или вы идете по низу рынка и заинтересовываете работодателя этим. Или набираете релевантный опыт для работодателя. Это могут пет проекты, фриланс, даже дипломная работа для студентов. Проблема вступающих в айти что они хотят 100500 сотен нефти в секунду, а опыта не имеют.