Чтобы программисту не надо было думать как поведет себя код, если ВДРУГ кто то снаружи изменит то, что менять не надо вообще.
К индирекшену. Когда тебе нужно всего лишь значение одного поля, но, для того, чтобы это значение получить, нужно писать лишние методы или, что еще глупее, классы.
В реальном мире бездумное использование приватных полей приводит:
class Character {
public double health;
public void TakeDamage(double damage) {
this.health -= damage;
if this.health <= 0.0 {
this.Die();
}
// ...
}
public void Die() {
// ...
}
}
Гугл выдаёт мне именно тот индирекшн, про который я написал. Если ты говоришь про другой - это тебе нужно написать, про какой именно.
Вот в случае с классами - хз, но и вспомнить случай, когда кто-то рекомендует вместо проперти писать отдельный класс я вспомнить не могу.
Если дашь пример - смогу ответить.
Вот совсем не очевидно ни то, ни другое.
Как правило наоборот - поля все делаются приватными, пока не будет чётко понятно, что его стоит сделать публичным.
Те же auto properties практически бесплатные и удаление их, если они не нужны - тоже, но вот обратный процесс, если изначально ошибся и сделал публичное поле, может потребовать рефакторинга.
На то он и пример - он первым пришёл в голову и он легко понятен будет "разработчику больше 12 лет от роду".
Более сложный пример нужно ещё придумать да и чтобы понять его придётся тоже голову включить.
Это будет очень хрупкая система модов.