
Alexandr
31.08.2018
04:02:50
Вот и я о том же. Надо в super заглядывать

ЕВГЕНИЙ
31.08.2018
05:47:15
Всем привет, в котлин нет чекед эксепшен? Как можно описать принудительную проверку исключений?
Аннатация тровабл не принудительная :)

Vladimir
31.08.2018
05:56:00

Google

ЕВГЕНИЙ
31.08.2018
05:57:12

Alexander
31.08.2018
05:58:20
Но вообще, да, возвращать нулябельный объект


ЕВГЕНИЙ
31.08.2018
06:01:58
А почему просто не делать try везде где это критично?
Ну смотри например есть нативный код, он кидает исключения, часть которых является проверяемыми есть n клиентов которые дёргают методы и получают фатальные ошибки (пытается писать в защищённую область памяти) обрабатываемые ошибки - уведомления о том что внутреннее состояние успешно переключено куда то ну или Лок если кто то другой захватил власть так сказать, с локами все понятно, а вот с исключениями .. ну те нужно не забывать обрабатывать определенные типы а другие пробрасывать выше .. просто в яве пишешь метод тип который швыряет исключение и каждый обязан его обработать
В принципе намерения убрать проверяемые исключения ясны (много писали об этом в той же эффективной яве) но тем не менее
Ну ладно исключения = sealed классы :) привет из 2к18

Vladimir
31.08.2018
06:07:54
На тему обработки ошибок есть интересный материал: https://github.com/Kotlin/KEEP/blob/master/proposals/stdlib/success-or-failure.md

Alexander
31.08.2018
06:10:35
Проблема в том, что никто никогда не проверяет проверяемые исключения, и они сильно вредят, когда вызов идет из лямбды какой-нибудь. Кроме того, есть такая правда жизни, что информацию передавать исключениями не стоит. Поэтому есть два механизма:
* или исключение обрабатывается на месте и дальше отсылается какое-то валидное состояние (Sealed class или Enum или буля)
* исключение пробрасывается с аннотацией Throwable и тогда тот, кто использует метод сам должен его обработать.

OlegKrikun
31.08.2018
06:41:12

Mikhail
31.08.2018
06:54:26


Maxim
31.08.2018
06:58:40
Нубский вопрос, наверное. Подскажите, пожалуйста, как избежать изменения элемента коллекции путем модификации этого же элемента (я так понимаю что коллекция содержит ссылки на элементы?) в другой коллекции?
Есть ArrayList элементов внутри презентера, где я их модифицирую. Дальше часть этих елементов выбираю и отправляю в адаптер для обновления всего списка, а дальше оказывется что внутри адаптера коллекция содержит ссылки на уже модифицированные елементы, в связи с чем есть некоторые проблемы с обновлением только изменившихся элементов, т.к. новая коллекция и "старая" содержат ссылки на одни и те же елементы и фактически ничем не отличается.
Я костыльнул и перед отправкой в адаптер сделал копию каждого элемента (data class copy)
Нормально ли это? Или есть какие то более очевидные варианты? Что то вроде действительно иммутабельной коллекции, которая не меняется никак?


Mi
31.08.2018
07:01:24
Ну любая коллекция не контролирует состояние её элементов
Так что "действительно иммутабельная" коллекция должна содержать иммутабельные элементы

Google

OlegKrikun
31.08.2018
07:02:06

Maxim
31.08.2018
07:02:39

Mikhail
31.08.2018
07:05:46

OlegKrikun
31.08.2018
07:06:23
вроде так его юзать и рекомендуется

Maxim
31.08.2018
07:06:39

Андрей
31.08.2018
07:06:44

Maxim
31.08.2018
07:06:55
Кто-нибудь уже успел его попробовать?

Maxim
31.08.2018
07:08:04

Mikhail
31.08.2018
07:12:14
Если переживаешь, что много менять надо, то я бы сделал два data class, мутабельную и немутабельную версии и отдавал наружу немутабельную

Alexander
31.08.2018
07:17:23

Maxim
31.08.2018
07:45:44

AleksanderSh
31.08.2018
08:31:49
Подскажите. У меня есть андроид приложуха, мне нужно в релизе логгер вырезать со статичными методами. Делаю как в джаве - в прогварде указываю правило assumenosideeffects. Ничего не выходит.

OlegKrikun
31.08.2018
08:44:22
ProGuard гугли

Михаил
31.08.2018
08:47:06
Парни, вопрос ребром
Вам Котлин по нраву?

Vitalii
31.08.2018
08:47:40
Да.

Alexander
31.08.2018
08:47:48
дааа

Vitalii
31.08.2018
08:47:52
Лучший язык из всех, на чём я программировал.

Google

Vitaly
31.08.2018
08:48:07
Не могу понять как правильно написать. Подскажите.
Допустим вот такой код:
class Repository {
suspend fun news() : List<News> {
...
}
}
IDE ругается на Redundant suspend modifier
Как правильно писать? Ведь этот код будет вызываться внутри корутины

Vitalii
31.08.2018
08:48:08
Уверовал в Бога и сына его Бреслава.

AleksanderSh
31.08.2018
08:48:09
ProGuard гугли
Что гуглить? Джавовые классы идеально вырезает, а котлиновские ни в какую.

Igor
31.08.2018
08:48:29
Вам Котлин по нраву?
Не хватает некотоpых вещей, но в целом – да. Коли я уж нашел способ тут сделать ноpмальный паттеpн-матчинг, мне офигенно.

Vitalii
31.08.2018
08:48:56

OlegKrikun
31.08.2018
08:49:01

Vitalii
31.08.2018
08:49:01
А то слышу обратные жалобы обычно.

Михаил
31.08.2018
08:49:15
Мне кажется в IDE еще не все так круто для него. Вчера часа 3 потратил на то чтобы понять, почему не создается бин в спринге. Оказалось, что когда я переместил класс, используя рефакторинг IDEA, то package классу не был изменен

OlegKrikun
31.08.2018
08:49:57

Михаил
31.08.2018
08:50:08
Ну да, я этого не ожидал))

OlegKrikun
31.08.2018
08:50:11
и ide делает всё правильно

OlegKrikun
31.08.2018
08:50:22
такая же фигня была =)

AleksanderSh
31.08.2018
08:50:26

Михаил
31.08.2018
08:50:42
Ну мне кажется, что если на момент переноса папки равны пакету, то надо хотя бы предупредить
Или я обленился)

Loljeene
31.08.2018
08:51:17
такая же фигня была =)
А разве идея не рефакторит? Я вот только что перемещал, она чет спросила про рефактор, я на автомате нажал ок. Пакет поменялся

Михаил
31.08.2018
08:51:35
В общем вы довольны
А я трешую потихоньку, после джавки

Google

OlegKrikun
31.08.2018
08:52:49
Ну если сравнивать с java, то конечно довольны. when воще огонъ

Михаил
31.08.2018
08:53:40
И что думаете по поводу количества вакансий?
Я не ведроид девелопер, по бэку исключительно

OlegKrikun
31.08.2018
08:54:14
Под андроид норм с вакансиями =)
Переходи, у нас тут много вкусняшек =)

Sergey
31.08.2018
08:54:39
?

Igor
31.08.2018
08:54:44

Quantum Harmonizer
31.08.2018
08:55:41

Sergey
31.08.2018
08:56:00

Admin
ERROR: S client not available

Igor
31.08.2018
08:56:00
https://gist.github.com/komigor/dabf63800b647bcafbc9137817a907f9
Пpoсто бомбический хак

OlegKrikun
31.08.2018
08:56:27
(если чо это каламбур был про названия)

Quantum Harmonizer
31.08.2018
08:56:39

Sergey
31.08.2018
08:59:03

OlegKrikun
31.08.2018
08:59:06

Quantum Harmonizer
31.08.2018
08:59:14

Google

Andrew
31.08.2018
08:59:25

OlegKrikun
31.08.2018
09:00:14

Quantum Harmonizer
31.08.2018
09:00:23
gRPC, наверное, норм

Mikhail
31.08.2018
09:00:32

Andrew
31.08.2018
09:00:38

jied
31.08.2018
09:00:46

Mikhail
31.08.2018
09:03:35

Boris
31.08.2018
09:05:26

Igor
31.08.2018
09:06:25

Maxim
31.08.2018
09:07:01

Igor
31.08.2018
09:07:11

Maxim
31.08.2018
09:09:19
Не понял вопpoса, а как без него, на if-else?
я вот, если честно, тоже совсем не понял хака, который был сделан, уж прости. То есть ты просто берешь статус и сравниваешь его с константами, но зачем-то сделал это через паттерны?

Igor
31.08.2018
09:10:03
Условия могут быть сложнее, тут важен не пpимеp, а то, что так делать можно.

Maxim
31.08.2018
09:10:46
но мне кажется, что вложенный when читабельнее, что ли

Igor
31.08.2018
09:11:51
но мне кажется, что вложенный when читабельнее, что ли
Так он может быть куда более глубоко вложенный, а паттеpны можно выносить в Entity, и это будет даже ближе к Clean arch, если пpисутствуют pазные стейты объекта.
Еще pаз – тут пpимеp только pади того, чтобы показать, как этим пользоваться. Далее уже можно делать что угодно, как угодно и где угодно. Суть исключительно в матчинге на любые пpедикаты + поддеpжка коpтежей.

Maxim
31.08.2018
09:13:37
в общем, хак интересный, но не уверен, что мне нравится

Igor
31.08.2018
09:14:18
С вложенными when так не сделать. Нельзя четко выделить в отдельные валидатоpы состояния.

Maxim
31.08.2018
09:14:48
то есть в итоге приходим к ENUM состоянию и when по нему?)