Sasha
Нет
Дима
Ты просто тем самым отсекаешь значительную долю вариантов и проблем при отладке
Дима
Так как чтение становится всегда заведомо статичным и не имеющим побочных эффектов
Ruslan
Proxy оптимизировали в V8, можно их юзать вместо геттеров/сеттеров
Андрей
Ещё раз уточню. Мы не про js
Андрей
А про c#, java, etc
Дима
Какие проблемы?
Я иду от обратного, когда у тебя уже есть проблемы и нужно найти их решение, чем меньше аспектов нужно держать в голове тем проще. И тут статичные объекты становятся значительно более выигрышным вариантом
Андрей
В js геттеры-сеттеры скорее всего не нужны.
Дима
А про c#, java, etc
Это исключительно их проблемы, серьезно
Дима
В джаве классы используют как миниатюрный глобал, из-за чего и идут их проблемы
Андрей
У тебя есть источник данных. Ты его используешь.
Дима
Да, однократно
Дима
У тебя есть источник данных. Ты его используешь.
Взял данные, явно, и больше его не трогаю
Андрей
Взял данные, явно, и больше его не трогаю
Ну, мне не нравится писать бойлерплейт.
Дима
Это не бойлерплейт
Дима
Вообще
Андрей
Я могу написать класс, который кеширует данные и выдаёт их. Вот здесь тебе геттер и пригодится.
Дима
Более того, это нормальный способ сделать немонолитный подход
Андрей
Наследуешься, перегружаешь и используешь.
Дима
Трижды нет
Дима
Я просто вызову функцию, а что она там кэширует уже не мои проблемы
Дима
Да, кстати, помимо всего прочего геттеры означают что ты обречён держать под рукой их контекст
Дима
Если значение из источника может поменяться в процессе дальнейших вычислений без всяческой возможности определить это без ручной проверки повторным запросом, то у тебя просто некорректный алгоритм в коде и костыль для него
Дима
Ты точно сейчас не про js?
А как должно это поменяться в тругих языках?
Дима
В том что поле я могу забрать
Андрей
А как должно это поменяться в тругих языках?
С тем, что контекст невозможно отвязать от функции в других языках.
Дима
Для того чтобы был геттер он должен быть у кого-то определен
Дима
Нет
Андрей
Чтобы достать значение из поля оно должно существовать.
Дима
На момент изъятия
Дима
Про дальнейшую работу ничего не говорится
Андрей
На момент изъятия
Поле и геттер всегда существуют.
Дима
А сам объект?
Андрей
Эм... Объект не всегда.
Дима
Это значит что имея геттер ты всегда будешь таскать за собой объект на котором он объявлен, в то время как значение можно взять и отправить в функцию которая вообще ничего не знает кроме того что ей нужен определенный тип данных
Дима
Это нормальный подход к разделению сущностей
Андрей
Вызов геттера и получания данных из поля не отличаются никак для пользователя.
Дима
В сущности это дискуссия между мутабельностью и иммутабельностью на уровне структуры объектов
Дима
Отрицают
Андрей
Каким образом?
Дима
Они не гарантируют идемпотентность и воспроизводимость
Андрей
Если они чистые, то гарантируют.
Андрей
В общем виде - да, но мы не говорим про макак-программистов.
Дима
У тебя в языке нет способа декларировать степень чистоты функции, ввиду чего чистая функция — это шанс, а не то на что можно положиться
Андрей
Я не представляю людей, которые будут в компилируемых языках поля выдавать наружу.
Андрей
Они обрекают себя на боль.
Дима
Если для получения данных тебе нужно вызвать функцию один раз — у тебя потенциально одно опасное место в коде, если ты используешь геттер — у тебя потенциально опасно каждое обращение к объекту
Дима
pure определяется не само по себе а через отсутствие сайд эффектов
Даня
Помогите С:
Даня
Допустим пользователь выделил текст.
Дима
Верно. Это легко исправляется.
Да, убиранием геттеров
Андрей
Да, убиранием геттеров
С твоей стороны.
Андрей
Но не со стороны либы.
Андрей
В либах нельзя разрешать прямой доступ к полям.
Даня
А потом перетащил его на рабочий стол в виде файла.
Даня
Куда копать?
Дима
Ты так ссылаешься на компилируемые языки, будто их проблемы чем-то актуальнее всех остальных и должны касаться кого-то, кто имеет несчастье использовать компилированные языки подобной надежности
Дима
Ты прямо будто стесняешься их
Дима
Это не сфера, это полукруг костылей
Андрей
В интерпретируемых языках ты можешь как угодно подменяь в рантайме, проблемы нет.
Дима
Просто в некоторых местах принято использовать геттеры и сеттеры а чем они это мотивируют это уже дело десятое