автор захотел и повалидировать и понотифаить и еще что-нибудь поделать
что уже не синонимично просто Set
Правильно ли я понимаю идею, что если метод выполняет валидацию, то это всегда должно быть отражено в нназвании? В общем случае set берёт абстрактное значение и мапит его на значение, которое уже имеет смысл в рамках логики класса. Например, Foo.Length = 3. Справа абстрактное целое число 3. Слева уже длина, которая равна 3 единицам. Если мапинг не удаётся, то надо сообщить об этом пользователю как можно раньше, а не на этапе, когда площадь будет вычисляться, например.