Как правило, это зависит от вас, что вы должны делать со свойством и его вспомогательным полем при получении / установке.
Чаще всего, чтобы быть единообразным в коде, вы должны использовать общедоступные средства доступа везде, где они доступны и уместны. Это позволяет вам проводить рефакторинг с минимальным изменением кода; если метод, выполняющий этот параметр, должен быть удален из класса и помещен в другое место, где вспомогательное поле больше не доступно (например, базовый класс), кого это волнует? Вы используете то, что доступно везде, где сам класс выполняет свою работу. Основное поле, в большинстве случаев, является деталью реализации; никто за пределами вашего класса не должен знать, что он существует.
Основная ситуация, о которой я могу думать, когда вам следует использовать поле поддержки, а НЕ средство доступа к свойству, - это когда средство доступа имеет дополнительную логику (проверку или обновление другой информации о состоянии в классе), которую вы не хотите запускать. Начальная популяция объекта является примером; у вас может быть класс, который использует два значения свойства для вычисления третьего значения, которое также хранится в резервном поле (по соображениям постоянства). При инициализации новой копии этого объекта с данными из БД, средства доступа к свойствам, каждое из которых пересчитывает третье значение, могут жаловаться, если другое необходимое значение не установлено. Используя вспомогательные поля для установки начальных значений этих двух (или трех) свойств, вы обходите логику проверки / вычисления до тех пор, пока экземпляр не окажется в достаточно согласованном состоянии для нормальной работы логики.