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