публичные поля это плохо и вообще нарушение инкапсуляции, а приватное поле с публичной парой гет/сет методов это то что доктор прописал и инкапсуляцию никак не нарушает, хотя по факту то эти два подхода мало чем отличаются на практике?
потому что если у тебя одно поле станет считаться из других (или добавится логика в геттер/сеттер), то в случае публичного поля тебе придётся поменять весь код, который это поле юзает. а в случае геттера - один метод
Да не сказал бы, что кто-то так считает. Просто есть общепринятая практика делать геттеры и сеттеры вместо использования полей напрямую
В Java так понятно 🤷♀ Даже если никакой логики / проверок в геттерах и сеттерах нет)) В Тайпскрипте, Котлине, Скале публичные поля это норм практика
В котлине компилятор сахарит и подставляет геттеры, емнип, а в Скале как правило используются иммутабельные объекты, и это другой мой поинт: сейчас и в джаве становится популярнее использование иммутабельных объектов, с которыми торчать публичными полями наружу не так страшно.
ой не в джаве иммутабельность боль
Чоита?
Ну нужен соотвествующий сахар как в фп языках, чтобы не было больно. Или хотя бы как в котлине - нормальные sealed, нормальное копирование на основе другой структурке (даже с ломбок это выглядит монстроузно)
Уже есть records и sealed классы
Да, но ты видел синтаксис) На сколько это далеко от какого-нить Either a = Left a | Right a
Сахар какой именно?
Рязанский XD
В скале вон тоже тайп юнионов нет во второй версии, живут же как-то.
Живу спокойно с тайплкассами же
Тайпклассы и юнионы вообще разные проблемы решают, как правило
В scala 2 нет selaed? Не знал, но язык тоже - такое, прямо скажем для любителей
Sealed есть, прямо как в джаве
А ну видимо без паттерн матчинга и с наследованием
Так в джаву ж патмат тоже завозят, не? Я давно на ней не писал
Sealed завезли, а matching нет)
Ты можешь логику впихнуть в сеттер и геттер.
Только этого почти точно делать не надо
Обсуждают сегодня