Mike
можно делать ?.let {}
50 оттенков говнокода
Ferrero
в иос легче избавляться от вложенности из-за nullable
neikist
50 оттенков говнокода
Ооочень спорно
Konstantin
51-ый
бессовестный троль чей продакшн код еще никто не видел😀
Ferrero
там есть guard let
Mike
там есть guard let
мб не в иос, а в свифте? guard — тот же if
Кирилл
50 оттенков говнокода
Вот именно поэтому последовал идее Igor и пушу через notifyUI ивенты (наследники sealed-класса). :)
Vitaly
прибивать презентер при смерти вьюхи
Так он наоборот должна жить дольше вьюхи, чтобы сохранять состояние
Ferrero
мб не в иос, а в свифте? guard — тот же if
да, но он не делает вложенности
Mike
бессовестный троль чей продакшн код еще никто не видел😀
А чей продакшен-код кто видел? Твоего кода я вот вообще никакого не видел
Mike
Так он наоборот должна жить дольше вьюхи, чтобы сохранять состояние
так, а что делать, когда вью отцепилась, пришло событие (ушло вникуда), вью прицепилась?
Mike
да, но он не делает вложенности
так, а что он возвращает при раннем выходе?)
Ferrero
nil / ничего
Ferrero
обычно это пишут в одну строку и это выглядит очень красиво
neikist
Я в котлине еще иногда пользуюсь variable ?: return, но оно подходит далеко не всегда.
Mike
Да, это лучше чем краш, причём состояние сохранится
не увидел чтобы там что-нибудь сохранялось, а вот это особенно эпично loginInteractor.requestInitialization(view?.getDeviceId())
Mike
Почему эпично?
потому что туда может передаться null
Vitaly
потому что туда может передаться null
Надо тогда внутри requestInitialization обработать null и будет норм тогда?
Николай
В связи с новым законом по идентификации пользователей мессенджеров по смс - а куда делать запросы для получения инфы от опсоса? все операторы уже предоставили публичные апи что ли?
Konstantin
нулабилити в одном месте и не размазывается
Konstantin
четка
Dj
А где самый традиционный способ проверки на нулл, if (var != null) {...} или он уже не модный?
Sergey
Почему эпично?
а почему кстати получением девайс айди занимается именно вью?
Dj
Почему все так яростно пытаются использовать var?.let{...} ??
Mike
да выкиньте уже в мусорку эти нуллы
Sergey
Потому что нужен контекст
контекст можно заинжектить куда надо
Dj
а какие варианты
джавовский, if (var != null) {...}
Konstantin
джавовский, if (var != null) {...}
это то во что он компилится
Konstantin
зачем мне джава
Artem
джавовский, if (var != null) {...}
Т.е. писать на котлине по джавовому? Какой смысл тогда тащить котлин в проект?
Vitaly
контекст можно заинжектить куда надо
Тогда наверное не контекст, а TelephonyManager надо передавать, чтобы потом его замокать, верно?
Konstantin
лейтинитом может еще скажи обмазаться
Dj
Т.е. писать на котлине по джавовому? Какой смысл тогда тащить котлин в проект?
Видел вот такой код: var?.let{ var1?.let{ var2?.let { } } } И тут мне кажется логичнее было бы использовать if (var != null && var1 != null && var2 != null){...} От котла тут немного пользы, всему должна же быть мера
Artem
Видел вот такой код: var?.let{ var1?.let{ var2?.let { } } } И тут мне кажется логичнее было бы использовать if (var != null && var1 != null && var2 != null){...} От котла тут немного пользы, всему должна же быть мера
Никто не спорит, что эта конструкция выглядит по меньшей мере странно, но зачем проецировать это на случай с одним null чеком не понятно
Vitaly
пиши чистые функции, и ничего не нужно будет мокать
Что ты имеешь ввиду под словом "чистые"?
Mike
Что ты имеешь ввиду под словом "чистые"?
без сайд-эффектов и без зависимостей
Mike
Как тогда переписать это?
на кой чёрт тебе это IMEI вообще? А если это планшет без GSM?
Konstantin
ну так напиши короче и понятнее если умеешь😀
Konstantin
у меня тако не вызывает отвращения например
Konstantin
сорян но в нашем мире бэкендеры не идеальные и чего то может не быть в респонзе
Mike
Как тогда переписать это?
и что ты собрался мокать?
Vitaly
на кой чёрт тебе это IMEI вообще? А если это планшет без GSM?
Бизнес поддерживает только устройства, где есть IMEI
Vitaly
и что ты собрался мокать?
Если я вынесу этот код в Presenter, как мне здесь посоветовали, то telephonyManager придётся мокать
Mike
Если я вынесу этот код в Presenter, как мне здесь посоветовали, то telephonyManager придётся мокать
передавай в презентер не менеджер, а функцию, которая вернёт imei
Vladislav
как установить для CheckBox дровабл параметра button по центру. хочу увеличить область нажатия чекбокса. чекбокс без текста чекбокс <CheckBox android:id="@+id/messageMyVoicePlayer" android:layout_width="32dp" android:layout_height="32dp" android:layout_marginStart="16dp" android:button="@drawable/player_padua" android:gravity="center" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
Vladislav
вид
Mike
Не понял, как это будет выглядеть?
принимать () -> String в конструктор. Передавать { context.getSystemService(...)... }
Vitaly
вид
Я бы toggleButton использовал
Konstantin
Сверху привел же пример
это в два раза дольше печатать
Konstantin
я вот че не пойму
Vitaly
принимать () -> String в конструктор. Передавать { context.getSystemService(...)... }
Это же сколько лямбд мне придётся вскоре передать... Это вообще дичь
Konstantin
котлин делает больше за меньше символов
Konstantin
чего вы еще в джава стиле пишете в котлине?зачем?
Konstantin
И не читабельный код
и тебя есть ide где на все есть подсказки, типы, параметры функций, хинты
Vitaly
чего вы еще в джава стиле пишете в котлине?зачем?
Нужно исходить из ситуации, в том примере, то написал @devit951 гораздо приятнее смотреть на джавовские проверки, чем на лестницу из скобочек
Dj
и тебя есть ide где на все есть подсказки, типы, параметры функций, хинты
Одним IDE код не читается, как же code review в github без доступа к ИДЕ?