Size: a a a

Kotlin Community

2020 October 22

i

i_vovolk in Kotlin Community
почему не object?
источник

VP

Vladimir Petrakovich in Kotlin Community
i_vovolk
почему не object?
Потому что не надо делать синглтон, если там внутри состояние, обращения к базе и вот это всё
источник

i

i_vovolk in Kotlin Community
в моем понимании, смысл этого контейнера настроек как раз в том, чтобы он был в единственном экземпляре. Да он обновляет свои поля, но сам объект только один.
источник

QH

Quantum Harmonizer in Kotlin Community
i_vovolk
в моем понимании, смысл этого контейнера настроек как раз в том, чтобы он был в единственном экземпляре. Да он обновляет свои поля, но сам объект только один.
пусть будет один экземпляр, только обджект не надо)
источник

i

i_vovolk in Kotlin Community
объясните мне, пожалуйста, почему object тут не подходит?
источник

i

i_vovolk in Kotlin Community
прям для тупых.
источник

QH

Quantum Harmonizer in Kotlin Community
i_vovolk
объясните мне, пожалуйста, почему object тут не подходит?
Потому что у него не может быть параметров, а для доступ в БД они необходимы.
источник

i

i_vovolk in Kotlin Community
источник

i

i_vovolk in Kotlin Community
нет параметров, пример упрощен, но оно работает
источник

QH

Quantum Harmonizer in Kotlin Community
есть, просто неявные (ConfigStorage, чё-то такое)
источник

i

i_vovolk in Kotlin Community
простите что мучаю. Но как они тогда есть, если их не может быть?
источник

QH

Quantum Harmonizer in Kotlin Community
i_vovolk
простите что мучаю. Но как они тогда есть, если их не может быть?
явных не может быть, получились неявные, а это упование на порядок инициализации
источник

i

i_vovolk in Kotlin Community
а, ну то есть проблема в том, что все свалится если конфиг будет вызван до того, как происходит DatabaseFactory.init()
А если сделать такой же init для конфига, то все будет хорошо?
источник

i

i_vovolk in Kotlin Community
спасибо за помощь и разжевывание
источник

AM

Andrew Mikhaylov in Kotlin Community
i_vovolk
объясните мне, пожалуйста, почему object тут не подходит?
Я бы ещё добавил, что кроме неявных параметров вашего обжекта вы ещё получаете неявную зависимость других классов от него. Что сильно усложняет процесс тестирования -- вам надо помнить, что нужно мокать глобальное состояние, причём в тех местах, которые явно не презентуют этого. Если бы у вас был обычный класс, вы бы а) имели явные параметры для его создания, б) его инстансы тоже явно передавали бы в те места, где он нужен, таким образом имея возможность отследить происходящее от начала и до конца, а также подменить при надобности ваш настоящий класс, общающийся с БД, на заглушку в тестах.

Насколько это для вас критично, решать, конечно, вам.
источник

i

i_vovolk in Kotlin Community
Andrew Mikhaylov
Я бы ещё добавил, что кроме неявных параметров вашего обжекта вы ещё получаете неявную зависимость других классов от него. Что сильно усложняет процесс тестирования -- вам надо помнить, что нужно мокать глобальное состояние, причём в тех местах, которые явно не презентуют этого. Если бы у вас был обычный класс, вы бы а) имели явные параметры для его создания, б) его инстансы тоже явно передавали бы в те места, где он нужен, таким образом имея возможность отследить происходящее от начала и до конца, а также подменить при надобности ваш настоящий класс, общающийся с БД, на заглушку в тестах.

Насколько это для вас критично, решать, конечно, вам.
спасибо! Уже сделал обычный класс
источник

PE

Pavel Erokhin in Kotlin Community
Заметил такую аннотацию в котлин 1.4, для чего ее добавили?, заметил что ею помечена функция capitalize в StringsJVM.kt

Доки к ней просто нет) в IDE
источник

SB

Sergey Barmin in Kotlin Community
думаю для миграции с 1.3 на 1.4 чтобы автоматом убрать экспериментальные аннотации, но это только догадки
источник

AL

Alexander Levin in Kotlin Community
Pavel Erokhin
Заметил такую аннотацию в котлин 1.4, для чего ее добавили?, заметил что ею помечена функция capitalize в StringsJVM.kt

Доки к ней просто нет) в IDE
Решил посмотреть в репо Котлина на неё, нашёл лестницу из parent'ов:

Поглядеть на использование вроде тут можно: https://github.com/JetBrains/kotlin/blob/master/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt
источник

AM

Andrew Mikhaylov in Kotlin Community
Интересно, почему не @WasOptIn :^)
источник