Я говорю о том, что должна быть причина сделать поле приватным, ты говоришь о том, что должна быть причина сделать поле публичным. Это немножко противоположные вещи
{get; set;}
писать.Открой главу, которая называется "Принцип единой ответственности" и посмотри что он советует делать в конце главы. Мне даже не пришлось ничего искать, по оглавлению понятно на какой странице будет бред.
Аргументация уровня дошкольника.
Когда я пишу про "безопасность и защиту", я имею ввиду ту мнимую безопасность которая появляется, когда кто-то просто везде пишет приватные поля и думает, что их никто не будет менять.
Да, это буквально сообщение из чата, сжатое до одного предложения. Можешь зайти в какой-нибудь юнити чат, там подобные истории будут еженедельно присылать.
Нет, я этого нигде не писал. Изначально нужно понимать, когда поле должно быть приватным. Этих ситуаций минимум и они всегда видны изначально. Как это понять и пример, я писал выше. Очередное смотрю в книгу - вижу фигу.
Сделал все приватным, а потом тебе нужно в разных местах ui одни и те же данные отобразить по-разному, твои действия? Переделать приватное поле под свойство? Так это же рефакторинг, нельзя так делать, сложно, да и данные наружу выходят, а так нельзя, это же инкапсуляцию нарушает (или нет?).
Зачем поле, которое изначально было публичным, делать приватным?
Смотрю в книгу - вижу фигу. Лучше бы со свежей головой прочитал все мои сообщения в этой ветке
Как я и писал раньше, вся эта непомерная "защита и безопасность" - бред
И, если публичные поля все ломают и делают плохо, почему же софт, написанный на С кучу лет назад, работает лучше(быстрее, меньше багов), чем тот ужас, что выпускают сейчас (можешь сравнить вижуал студию до того, как она перешла с плюсов на C# и после).
Сидеть и ограничивать себя в возможностях использовать данные так как тебе хочется, подбирать паттерны часами, надеясь найти подходящий, пытаться соблюдать "лучшие практики", солид, кисс, драй, ай, вай, а потом плакать в тг чатах, что уже год делаешь клон флеппи берд и не можешь доделать, потому что сложно все очень и запутанно. Типичный современный "программист".
Плохо гуглил
Чтобы найти пример, можешь прочитать практически любую статью/книжку/гайд про "правильное программирование", где тебе будут втирать, что нужно делать как можно больше маленьких классов для абсолютно тривиальных вещей.
Удивительно сложный рефакторинг - нажать две кнопки в райдере или любом другом иде.
В чем заключается ценность приватных полей, если они абсолютно везде? Каким образом понять, что поле следует сделать публичным?
В чем заключается хрупкость? То, что мододел сломал все, не почитав документацию, проблема исключительно мододела.
К нечитабельному коду. Когда вместо публичного поля используется конструкция типа
Во-первых, я не про тот индирекшен, чтобы понять про какой я говорю, загугли значение этого слова.
Во-вторых, каким образом жит компилятор уберет тебе прыжки по указателям в случае с классами?
В-третьих, если у тебя 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() {
// ...
}
}
Чипы/модули производит только espressif, так что они по определению не могут быть неоригинальными.
Модуль - эта вон та мелкая штука сверху с металлической крышкой и антенной.
Какие девкиты делает espressif можешь посмотреть тут:
https://www.espressif.com/en/products/devkits