Size: a a a

Programming Offtop

2021 March 16

AN

Alexander Nozik in Programming Offtop
(
Ну так конечные типы - это различные сочетания существующих компонентов. Неприятно
Ну тебе в любом случае их надо писать, хоть в виде хускель типов, хоть в виде дата классов. Ты же не можешь этого избежать. Если ты хочешь статически иметь доступ к конкретным полям, то они где-то да должны бытьпрописаны. Какая разница где?
источник

(

( in Programming Offtop
Alexander Nozik
Ну тебе в любом случае их надо писать, хоть в виде хускель типов, хоть в виде дата классов. Ты же не можешь этого избежать. Если ты хочешь статически иметь доступ к конкретным полям, то они где-то да должны бытьпрописаны. Какая разница где?
Разница в том, что в одном случае это мне нужно заморочиться и объявить их именованное объединение, а в другом случае они из контекста выводятся
источник

AN

Alexander Nozik in Programming Offtop
(
Разница в том, что в одном случае это мне нужно заморочиться и объявить их именованное объединение, а в другом случае они из контекста выводятся
Про объединение согласен, это так просто не заэмулируешь
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Угу, проще взять use
Иии... забыть его заиспользовать. Лучше взять язык с RAII.
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Иии... забыть его заиспользовать. Лучше взять язык с RAII.
Это очень спорное утверждение. С RaII есть проблема с параметрической инициализацией и преждевременной инициализацией. Я с этим игрался, чего-то как-то мне не понравилось
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Это очень спорное утверждение. С RaII есть проблема с параметрической инициализацией и преждевременной инициализацией. Я с этим игрался, чего-то как-то мне не понравилось
Это всё равно на порядок лучше, чем в высокоуровневой логике жонглировать Closeable. С ресурсами в джаве или котлине выстрелить в ногу проще простого, если делать что-то сложнее Resource().use { ... }.
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Это всё равно на порядок лучше, чем в высокоуровневой логике жонглировать Closeable. С ресурсами в джаве или котлине выстрелить в ногу проще простого, если делать что-то сложнее Resource().use { ... }.
Если API построен так, что без use нельзя получить доступ, то проблем нет. Будет тот же RAII, только лучше контролируемый. Проблема же не в use а в том, что народ портирует код с жавы и чего-нибудь не доделывает
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Если API построен так, что без use нельзя получить доступ, то проблем нет. Будет тот же RAII, только лучше контролируемый. Проблема же не в use а в том, что народ портирует код с жавы и чего-нибудь не доделывает
Если всегда делать так, то да. Но это же не всегда подходит.
А портирование с джавы не при чём, можно с нуля написать то же самое.
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Если всегда делать так, то да. Но это же не всегда подходит.
А портирование с джавы не при чём, можно с нуля написать то же самое.
Просто на том же котлин можно писать в RAII стиле. Я попробовал. Не понравилось. Там получается неявная логика с сайд-эффектами в конструкторе. Что есть 💩. Лучше уж делать функцию со скоупом и прятать вообще класс.
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Просто на том же котлин можно писать в RAII стиле. Я попробовал. Не понравилось. Там получается неявная логика с сайд-эффектами в конструкторе. Что есть 💩. Лучше уж делать функцию со скоупом и прятать вообще класс.
Так сайд-эффекты в конструкторе легко исправляются фабричным методом.
источник

VP

Vladimir Petrakovich in Programming Offtop
В котором, правда, грабли будут аккуратно разложены
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Так сайд-эффекты в конструкторе легко исправляются фабричным методом.
А тогда зачем вообще RAII, там прячестся конструктор и весь фабричный метод работает как скоуп
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
А тогда зачем вообще RAII, там прячестся конструктор и весь фабричный метод работает как скоуп
А, ну так это и есть ваш подход, так?
источник

AN

Alexander Nozik in Programming Offtop
Будет не File(name).use{} а useFile(name){}
источник

VP

Vladimir Petrakovich in Programming Offtop
RAII в котлине-то нет, поэтому и приходится как-то выкручиваться
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
А, ну так это и есть ваш подход, так?
Да.
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
RAII в котлине-то нет, поэтому и приходится как-то выкручиваться
Так RAII делают ради освобождения, а у меня терки с созданием, с котрым никаких проблем нет
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Так RAII делают ради освобождения, а у меня терки с созданием, с котрым никаких проблем нет
А какие могут быть тёрки с созданием? 🤔
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
А какие могут быть тёрки с созданием? 🤔
Уже сказал, мне не нравится, что в конструкторе какие-то мутные дейсвтия выполняются.
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Уже сказал, мне не нравится, что в конструкторе какие-то мутные дейсвтия выполняются.
Так в языке с RAII это просто норма
источник