Я тоже не против, и у меня нет сильных предпочтений [и не придерживаюсь некоторых строгих стандартов], просто используйте свое суждение. Но если вы используете сеттеры, любой, кто переопределяет класс, должен знать, что объект может быть создан не полностью. При этом убедитесь, что никакой дополнительный код в установщиках не может опубликовать ссылку this
.
Сеттеры могут быть полезны для стандартных проверок диапазона и т. Д., Поэтому дополнительный код для проверки ввода не требуется. Повторное использование сеттеров - более грязный подход.
Использование поля имеет очевидные преимущества (например, уверенность в том, что любой подкласс не сможет злонамеренно изменить поведение), и это обычно предпочитается, особенно. в библиотеках.
На самом деле c-tor - это один из 3 возможных способов создания объекта (сериализация + клон - 2 других), возможно, необходимо обработать некоторое переходное состояние вне c-tor, так что у вас все еще есть, что задуматься о полях. против сеттеров. (Правка, есть еще одна половина пути: небезопасно, но это то, что использует сериализация)