
Dmitry
26.10.2017
12:51:49

Quantum Harmonizer
26.10.2017
12:52:05

Anton
26.10.2017
12:52:07

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

Google

Vitalii
26.10.2017
12:52:59

Руслан
26.10.2017
12:52:59

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

Quantum Harmonizer
26.10.2017
12:53:36

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:10:40

Илья
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

Yevhen
26.10.2017
14:18:48

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
Ну не то чтобы я адепт наследования, я скорее противник. Но когда мне пришлось в типовом джава проекте прикрутить билдеры и при этом классы могли наследоваться - было больно. Во-вторых билдеры это бойлерплейт которого я как раз и не люблю в джаве, дублировать ради дублирования. Посмотри все же на подход интерфейс иммутабл + мутабл класс

Dmitry
26.10.2017
14:22:20

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

Ivan
26.10.2017
14:34:10

Gor
26.10.2017
14:34:58

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

Google

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

Gor
26.10.2017
14:41:02

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

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

Ivan
26.10.2017
14:53:59

Gor
26.10.2017
14:56:25

Руслан
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
с пивком пойдет