Size: a a a

Kotlin Community

2020 October 05

AN

Alexander Nozik in Kotlin Community
Dima
С точки зрения инкапсуляции, совершенно нормально выставить
val list = ArrayList<AnyType>
Нет, не нормально. мы даем небезопасный доступ на запись
источник

с#

саша сок #KotlinGang... in Kotlin Community
саша сок #KotlinGang
да? ну я например не хочу позволить очищать колбеки из какой-то другой части программы
я хочу их просто добавлять
источник

D

Dima in Kotlin Community
Alexander Nozik
Нет, не нормально. мы даем небезопасный доступ на запись
Я думаю здесь только race разве что опасаться. А так, в однопоточном коде, дополнительный метод класса для добавления листенера, будет делать абсолютно тоже самое
источник

AN

Alexander Nozik in Kotlin Community
Но котлин-вей - это безусловно функция высшего порядка
источник

AN

Alexander Nozik in Kotlin Community
Dima
Я думаю здесь только race разве что опасаться. А так, в однопоточном коде, дополнительный метод класса для добавления листенера, будет делать абсолютно тоже самое
Мы же не про стабильность кода говорим, а про архитектуру. Экспозить мутабельный лист, который реально является частью внутренней логики - это ошибка проектирования. Не сильно большая, но ошибка
источник

D

Dima in Kotlin Community
Alexander Nozik
Мы же не про стабильность кода говорим, а про архитектуру. Экспозить мутабельный лист, который реально является частью внутренней логики - это ошибка проектирования. Не сильно большая, но ошибка
Хотя немного подумал, и в общем то да, соглашусь с тобой. Ибо помимо добавления, у листа много других методов, которые конечному пользователю нашего API совершенно ни к чему трогать.
источник

D

Dima in Kotlin Community
Но вот ведь в Java геттер для листа часто возвращает отнюдь не safe-copy, и пользуются люди в разных проектах)
источник

AN

Alexander Nozik in Kotlin Community
Dima
Но вот ведь в Java геттер для листа часто возвращает отнюдь не safe-copy, и пользуются люди в разных проектах)
Ну программирование - оно про компромиссы. Часто сделать хорошую архитектуру сильно дороже, чем срезать угол. Котлин позволяет делать более идиоматичный и чистый кода по сравнению с жавой. За что и любим. Тем не менее и в котлин иногда приходится углы срезать
источник

с#

саша сок #KotlinGang... in Kotlin Community
Dima
Но вот ведь в Java геттер для листа часто возвращает отнюдь не safe-copy, и пользуются люди в разных проектах)
ну в джаве тоже никто бы лист не отдавал, чтобы вызывать object.callbacks.add(...), а сделали бы object.addCallback(...)
источник

IP

Iaroslav Postovalov in Kotlin Community
Dima
А есть ли в Kotlin стандартные аналоги C#-овским event ам?
просто список лямбд :/
источник

AA

Anton Arhipov in Kotlin Community
Dima
А есть ли в Kotlin стандартные аналоги C#-овским event ам?
источник

QH

Quantum Harmonizer in Kotlin Community
Iaroslav Postovalov
просто список лямбд :/
*функций
источник

IP

Iaroslav Postovalov in Kotlin Community
Quantum Harmonizer
*функций
объектов функциональных типов, @Harmonizr
источник

QH

Quantum Harmonizer in Kotlin Community
Iaroslav Postovalov
объектов функциональных типов, @Harmonizr
угу, объект функционального типа жеж и есть функция)
источник

IP

Iaroslav Postovalov in Kotlin Community
Quantum Harmonizer
угу, объект функционального типа жеж и есть функция)
нет, kotlin.Function - это сам по себе функциональный тип
источник

QH

Quantum Harmonizer in Kotlin Community
Iaroslav Postovalov
нет, kotlin.Function - это сам по себе функциональный тип
У меня тогда встречный вопрос — а можно сказать, что String — это строка? Или нельзя, String — это только класс, а "bla" — «объект типа Строка»?
источник

IP

Iaroslav Postovalov in Kotlin Community
Quantum Harmonizer
У меня тогда встречный вопрос — а можно сказать, что String — это строка? Или нельзя, String — это только класс, а "bla" — «объект типа Строка»?
ты прав
источник

IP

Iaroslav Postovalov in Kotlin Community
Quantum Harmonizer
У меня тогда встречный вопрос — а можно сказать, что String — это строка? Или нельзя, String — это только класс, а "bla" — «объект типа Строка»?
потому что String - это несколько килобайт байт-кода плюс нативные реализации плюс интринсики хотспота. данных в них никаких нет
источник

QH

Quantum Harmonizer in Kotlin Community
Iaroslav Postovalov
потому что String - это несколько килобайт байт-кода плюс нативные реализации плюс интринсики хотспота. данных в них никаких нет
ну, об этом на уровне ЯП/компилятора мы знать не хотим
источник

AN

Alexander Nozik in Kotlin Community
Есть оказывается такая вот штука: https://www.meetup.com/Virtual-Kotlin-User-Group
источник