@kotlin_lang

Страница 388 из 982
Quantum Harmonizer
26.10.2017
12:52:05
Vitalii
26.10.2017
12:52:21
какой профит от этого получится?
См. разделение на Android, JVM и Android Architecture. Разделение иметь смысл может. Просто не в этом случае (по крайней мере пока).

Google
Vitalii
26.10.2017
12:52:59
это таки чаще всего Android
Ну всё теперь, народ, который пишет гуй на JVM идёт нах^W в Android-чат (ЩИТО?!). Большинство != все

Руслан
26.10.2017
12:52:59
какой профит от этого получится?
Не всем интересно отвлекаться на обсуждение корутин в андретоу, или про то как настроить правила для корутин в прогварде.

Anton
26.10.2017
12:53:01
разделение андроид ру от архитектуры дало профит что более менее опытные разрабы собрались в арх чате

Quantum Harmonizer
26.10.2017
12:53:36
Ну всё теперь, народ, который пишет гуй на JVM идёт нах^W в Android-чат (ЩИТО?!). Большинство != все
большинство конфигов прогарда для андроида — андроид-специфичны

Vitalii
26.10.2017
12:54:18
большинство конфигов прогарда для андроида — андроид-специфичны
Большинство != все [2] Полагаю, что корутины можно использовать с JavaFX. Я понял мысль, и в данном случае как раз был Android вопрос, но он как раз не из тех, которые можно назвать строго Android-вопросами, ибо ответ может быть применим к другим платформам (частично или полностью).

Alexander
26.10.2017
13:07:25
Чет не могу нагуглить ответ на вопрос, как в Kotlin указать generic тип с массивом внутри, в rxJava2 есть Consumer<Object[]> в Kotlin это Consumer<Any и тут что указать> ?

Илья
26.10.2017
13:11:20
Consumer<Array<Any>> по идее

Alexander
26.10.2017
13:11:28
точно же спасибо

DarkMentat
26.10.2017
13:16:42
да и не ужели вам не интересно почитать обсуждение немного платформо-специфичный воспросов?

вот я люблю и про котлинJs послушать, и про бекенд

хоть ни то, ни то не шарю

Anton
26.10.2017
13:30:44
все холивар утих уже

Google
Anton
26.10.2017
13:30:50
ты опоздал

DarkMentat
26.10.2017
13:37:01
видимо да

или ушел в другой чатик

еще один

@kotlin_chat_holywar

Gor
26.10.2017
14:11:51
в студии или идее есть генератор для котлиновских билдеров?

Ivan
26.10.2017
14:12:15
котлиновские билдеры?

Gor
26.10.2017
14:12:36
агамс, та любой на самом деле

дефолтная тулза Replace constructor with builder не срабатывает

Ivan
26.10.2017
14:13:19
давайте начнем с вопроса, зачем в котлине билдеры если есть дефолт значения + именованные параметры?

Gor
26.10.2017
14:13:39
плохой вопрос

именнованые параметры совсем не то

Ivan
26.10.2017
14:15:05
разве? .withMyParam(param) - java myParam = param - kotlin

Gor
26.10.2017
14:15:36
дефолтные значения подразумевают что объект будет создан сразу мне же нужно промежуточное состояние где часть полей уже засетилась но объект еще не цельный

что и дает билдер

Руслан
26.10.2017
14:16:27
Можно делать для этого немутабельный интерфейс + мутабльный класс

Ivan
26.10.2017
14:16:42
давайте поможем вам зарефакторить код? ?

собираете нужные данные и создаете иммутабельный объект вместо создания билдера и передачи его в 100500 мест

Gor
26.10.2017
14:17:26
а что плохого в билдере?

Google
Руслан
26.10.2017
14:18:17
Наследование и билдеры это ад

Gor
26.10.2017
14:18:25
Ivan
26.10.2017
14:18:57
билдеры в котлине нужны примерно так же как и ;

но если вам хочется свой островок мутабельности,то никто не запрещает написать класс на джаве,сделать для него билдер и конвертнуть в котлин ?

Gor
26.10.2017
14:20:01
Наследование и билдеры это ад
действительно не вижу в билдерах никакого зла, если они решают свою задачу

а наследование просто ограничивает, но опять же, для решения задач подходит

сам концепт билдера позволяет строить объект исходя из каких-то сторонних параметров, делать мутабельный класс и оборачивать в иммутабельный интерфейс, это разве не костыль в этом случае?

Anton
26.10.2017
14:21:48
потому что есть дефолтные параметры

билдер нужны только если интероп с джавой

Алексей
26.10.2017
14:22:07
а что плохого в билдере?
если я правильно понял ваш кейс то минус будет в мутабельности объекта. т.е Hren.Builder builder = Hren.newBuilder(); Hren hren = builder .setParam("one") .build(); assert hren.getParam().equals("one"); // true builder.setParam("two"); assert hren.getParam().equals("one"); // false

Ivan
26.10.2017
14:22:09
язык в отличии от джавы форсит иммутабельность и дефолтный значения и прочие хорошие штуки

Руслан
26.10.2017
14:22:19
Ну не то чтобы я адепт наследования, я скорее противник. Но когда мне пришлось в типовом джава проекте прикрутить билдеры и при этом классы могли наследоваться - было больно. Во-вторых билдеры это бойлерплейт которого я как раз и не люблю в джаве, дублировать ради дублирования. Посмотри все же на подход интерфейс иммутабл + мутабл класс

Gor
26.10.2017
14:23:01
потому что есть дефолтные параметры
и чем они мне помогут если для меня дефолтное значение не должно быть валидным ни в коем из случаев

Anton
26.10.2017
14:23:39
ну делай их нулами

Ivan
26.10.2017
14:23:48
а билдер чем тут поможет?)

и как валидация связана с билдером то?

Vic
26.10.2017
14:24:05
А еще синтаксически билдеры менее удобны чем ДСЛ

Google
Anton
26.10.2017
14:24:17
билдеры вообще отстой

Ivan
26.10.2017
14:24:32
набросились ?

Gor
26.10.2017
14:25:12
ну делай их нулами
отличный совет, язык ведь форсит нал сейфти

Anton
26.10.2017
14:25:24
да ты сам странный кейс какой то сказал

что дефолтные значения какие то невалидные

Gor
26.10.2017
14:25:44
ладно, поподробнее опишу, может смотрю куда-то не туда

Anton
26.10.2017
14:25:46
как это билдером решать?

Gor
26.10.2017
14:30:58
есть к примеру 10-15 полей для инпута(количество имеет значение так как оперировать таким количеством аргументов не слишком удобно) я собираю их в виде строк и помещаю в одну модель, которую передаю на слой валидации теперь собственно кейс, из этой модели с непонятными строками мне нужно создавать валидный обжект либо кидать ексепшн. я вижу это так, создаеться билдер для валидного объекта, в который помещаются данные в процессе валидации и конвертации каждого поля, по окончанию, если валидация была успешной я из билдера создаю валидный объект, который будет имутабельным и имеет все валидные поля.

возможно не самое прямое решение на уровне валидации, но пока остановился на этом

Ivan
26.10.2017
14:32:17
а нельзя просто прогнать валидатором по нужным филдам и в случае чего кинуть эксепшн,в случае если все ок вернуть обьект

ну типо интерфейс валидатор,куча имлементаций + композитный

Gor
26.10.2017
14:33:17
а нельзя просто прогнать валидатором по нужным филдам и в случае чего кинуть эксепшн,в случае если все ок вернуть обьект
проблема в том что в процессе валидации идет и конвертация постоянная, потому хорошо бы сетить значения сразу при успешной валидации

Gor
26.10.2017
14:34:58
rx не используешь? с ним очень удобно валидировать поля
использую, но не в самой валидации, на rx будет прокинут ексепшн который переловит подписчик и будет с ним что-то делать

Ivan
26.10.2017
14:37:02
а очень хорошо упарываться по типам

Igor
26.10.2017
14:38:04
А это как? Either?

Руслан
26.10.2017
14:39:04
И не нужны билдеры при таком подходе

Gor
26.10.2017
14:40:03
Делай просто объект с мутабельными полями, и для него интерфейс который с val
но тогда есть кейс когда не все поля засечены и у них дефолтные значения, тогда нужно будет делать метод типа исВалид на самом объекте, верно?

Google
Руслан
26.10.2017
14:40:36
Ну смотря как ты валидацию делаешь

Gor
26.10.2017
14:41:02
Есть тут подход один,не юзать onError :)
я пока не вижу особой проблемы с прокинутыми ексепшенами, потому эту часть пока такой оставлю

Ivan
26.10.2017
14:42:52
А это как? Either?
можно так,а можно sealed класс в двумя/n дата классами внутри, каждый описывает кейс какой-то,например: валидный объект, невалидное имя, невалидный пароль и тд

Gor
26.10.2017
14:43:24
Ну смотря как ты валидацию делаешь
сейчас поочередно проверяется каждое поле, т.е. после валидации первого поля у меня будет создан объект с 1 валидным полем и 14 дефолтными с таким подходом

Руслан
26.10.2017
14:44:13
Ладно, положил на стек, буду за компом покажу что я имею ввиду

Ivan
26.10.2017
14:44:42
Gor
26.10.2017
14:45:02
думаю, проблема основная в этом, лучше собирать обьект когда все поля уже прошли валидацию
тогда будет дублироваться конвертация, но согласен так в разы проще

т.е. билдер выступает холдером уже сконвертированных данных

Igor
26.10.2017
14:48:39
можно так,а можно sealed класс в двумя/n дата классами внутри, каждый описывает кейс какой-то,например: валидный объект, невалидное имя, невалидный пароль и тд
Ну как-то слишком необобщенно)), можно сделать generic Either/Result (так же через sealed) и в ошибку передавать enum с типами ошибками

Ivan
26.10.2017
14:49:42
ну тут все зависит от того что с ним делать дальше,если вы в дальнейшем будете парсить ошибку и разбираться что конкретно сломалось,то вариант с sealed классами выглядит весьма ничего

если вам просто важно либо Success,либо Failure,то и Either зайдет со своим left,right

Ivan
26.10.2017
14:53:59
тогда будет дублироваться конвертация, но согласен так в разы проще
понятно, если делать валидацию и конвертацию каждого поля с помощью рх, то есть операторы типа distinctUntinChanged которые не пропустят одно и тоже значение в саму конвертацию и дублирования не будет

Руслан
26.10.2017
16:03:27
ну и наверно лучше всего validate метод прикрутить к DefaultParsedValues (или даже лучше к ParsedValues), который проверит целостность объекта.

Что думаешь?

No1
26.10.2017
17:15:24
как котлин?:) хорош?)

You
26.10.2017
17:16:18
Да

Anton
26.10.2017
17:16:26
с пивком пойдет

Страница 388 из 982