Як правило, від вас залежить, що ви повинні робити з властивістю та її резервним полем при отриманні / налаштуванні.
Найчастіше, щоб бути послідовними для коду, слід використовувати загальнодоступні аксесуари, де б вони не були доступні та доцільні. Це дозволяє робити рефактор з мінімальною зміною коду; якщо метод, що виконує цей параметр, потрібно викреслити з класу і покласти десь в іншому місці, де поле резервного копіювання більше не доступне (як базовий клас), кого це цікавить? Ви використовуєте щось, що доступне там, де сам клас виконує завдання. Поле резервного копіювання, в більшості випадків, є деталі реалізації; ніхто поза твого класу не повинен знати, що він існує.
Основна ситуація, про яку я можу подумати, коли вам слід використовувати поле резервного копіювання, а НЕ аксесуар властивості - це тоді, коли в аксесуара є додаткова логіка (перевірка чи оновлення іншої інформації про стан у класі), яку ви не хочете запускати. Початкова популяція об'єкта - приклад; у вас може бути клас, який використовує два значення властивості для обчислення третього, який також зберігається в резервному полі (з постійних причин). Під час ініціалізації нової копії цього об'єкта, що задається даними з БД, доступність властивостей, кожен з яких перераховує третє значення, може скаржитися, якщо інше необхідне значення не встановлено. Використовуючи поля резервного копіювання для встановлення початкових значень цих двох (або трьох) властивостей, ви обминаєте логіку перевірки / обчислення до тих пір, поки екземпляр не буде в достатньо послідовному стані для нормальної роботи логіки.