@kotlin_lang

Страница 310 из 982
Maxim
08.09.2017
10:08:52
Велика сила комьюнити!

Igor
08.09.2017
10:11:53
Можно еще посмотреть последние доклады от ДмитрияЖ про “кишочки” котлина - там тоже много интерестного

Igor
08.09.2017
10:15:08
https://youtu.be/yYG12qaxWO4

Google
Антон
08.09.2017
10:16:44
Спасибо

Mi
08.09.2017
10:24:40
https://youtu.be/yYG12qaxWO4
О, а я и пропустил это, спасибо

Lev
08.09.2017
10:33:22
Я правильно понимаю что kotlin подталкивает чтобы не было nullable свойств?

аааа.... а как сделать setter который this возвращает????? ОмагадОмагадОмагадОмагадОмагадОмагадОмагад

Sergey
08.09.2017
10:42:38
а зачем?

with(user) { name = 1 pass = 2 a = 3 }

вот тебе и fluent interface

Konstantin
08.09.2017
10:43:18
Я бы предположил, что для Builder pattern, но у нас есть named и default arguments

Lev
08.09.2017
10:47:45
И еще вопрос

Констуктор класса в котлине имеет в аргументе тип Double

Как мне это с явы то вызвать?

Sergey
08.09.2017
10:48:33
а в чем проблема? в джаве ж есть Double

Lev
08.09.2017
10:49:11
Ну вот че то.. не подходят типы

Google
Pavel
08.09.2017
10:49:54
Какой именно? примитив или обертка?

Lev
08.09.2017
10:50:45
Я ошибся сигнатурой просто

примитив явы "вошел" в Double котлина без проблем

Я правильно понимаю что kotlin подталкивает чтобы не было nullable свойств?

Михаил
08.09.2017
10:54:18
подталкивает не то слово) пинает*

Igor
08.09.2017
11:04:03
Lev
08.09.2017
11:13:52
тяжко будет... яву перевести на котлин. В половине мест - nullable

в том числе в тех же сущностях

тот же id дожлен быть nullable - т.к. при отправке в orm она должна понять создавать сущность или обновлять

Руслан
08.09.2017
11:15:40
ставь lateinit или Int?

если у тебя реально поле бывает null и через магию ORM сетается

Lev
08.09.2017
11:16:03
ну... когда будут получать id каждый раз мучаться с проверкой "вдруг там null", хотя я сущность только что из бд прочитал

Lev
08.09.2017
11:17:20
... выглядит как какойто костыль это !!

Руслан
08.09.2017
11:17:41
так и есть

Lev
08.09.2017
11:18:03
я не могу воткнуть lateinit. Потому что орм проверит (очевидно) что там в id. И получится что там null и, как я понимаю, будет бобо

"Тип такого свойства должен быть non-null и не должен быть примитивным. Доступ к lateinit свойству до того, как оно проинициализировано, выбрасывает специальное исключение, которое чётко обозначает, что свойство не было определено." А у меня это String

Еще и не должно быть в конструкторе

посмотрел инфу по spring-data-kotlin. Чуваки там val пишут в свойствах...

Google
Lev
08.09.2017
11:22:47
val id: Long = -1 лол

Руслан
08.09.2017
11:22:53
все просто

не переводи сущности jpa на котлин

Lev
08.09.2017
11:23:17
Ну как так то?

Руслан
08.09.2017
11:23:39
ну jpa и без котлина костыльная и убогая

Lev
08.09.2017
11:23:42
А не спасет... при работе с сущностями java в котлине - все равно мучаться с nullable

Руслан
08.09.2017
11:23:46
эти аннотации

возьми ORM где можно нормально работать

https://www.jooq.org/ http://cayenne.apache.org/

Lev
08.09.2017
11:26:08
Ну да, ща все перепилю, погоди

Руслан
08.09.2017
11:27:06
стоп, а зачем ты существующий код перепиливаешь?

Lev
08.09.2017
11:27:25
ну... не хочу яву хочу котлин

Руслан
08.09.2017
11:27:41
ну пиши на котлине, зачем легаси то трогать

Lev
08.09.2017
11:28:00
Ну.. это типа мое легаси

могу и трогать

плагин org.jetbrains.kotlin:kotlin-noarg - для того чтобы создавать пустой констурктор для всех @Entity

Руслан
08.09.2017
11:28:49
да, больше костылей, богу костылей

Lev
08.09.2017
11:29:14
=)

А зачем... делать val в свойствах?

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

Google
Руслан
08.09.2017
11:35:18
хорошо же

Lev
08.09.2017
11:35:30
хз.. чем?

взял пачку объектов, прогнал через какую либо фию.. она все поменяла что ей надо. Дальше работаешь.

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

Я очевидно не догоняю, но вы бы объяснили в чем фишка immutability

Mi
08.09.2017
11:38:05
В консистентности данных

Руслан
08.09.2017
11:38:27
прям недавно было: https://blog.jetbrains.com/idea/2017/08/code-smells-mutation/

Konstantin
08.09.2017
11:38:28
А тут - она вернет новый массив, а он может быть был закреплен в другом объекте - перепривязывать
Ну, во-первых thread-safety. Нет никаких проблем с изменением состояния и всем вот этим вот. Просто новый объект, который всегда можно читать. Во-вторых, "А тут - она вернет новый массив, а он может быть был закреплен в другом объекте - перепривязывать" говорит о том, что это построено на сайд-эффектах. А сайд-эффекты довольно мутная тема чтобы строить на них сколко-нибудь серьезные вещи.

Anton
08.09.2017
11:39:34
это кстати тоже описывается в эффектив джаве которую я рекомендовал посмотреть))

профит от имутабельности

John
08.09.2017
11:39:41
если посмотреть в сторону react и redux - можно очень быстро проверять - было ли по факту изменение данных, и соответсвенно - нужно ли запускать процесс обновления ui

Lev
08.09.2017
11:39:49
типа вдруг нечистая функция напорет непойми что в объекте по ссылке?

@metalgear ну вот это и есть большой минус. Это заставляет перерисовывать (как минимум пересчитывать) дофига чего. Было бы у них реактивное хранилище - проблем бы не было.

John
08.09.2017
11:41:42
@lllewik это как angular и его 2х сторонний биндинг?

Lev
08.09.2017
11:42:07
@metalgear а я не говорил про двусторонний =) Состояние надо менять только через action)

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

Lev
08.09.2017
11:44:35
Я не говорил про чистоту. Ну в плане того что аргументы не поменяются - тут да, будет чистота.

John
08.09.2017
11:44:39
ну в самом простом случае у нас есть ссылка на предидущее состояние, и результат работы чистой функции-редусера, который вернет ту же самую ссылку, если объект не изменился, иначе возвращается новый объект, можно проверять наличие изменений простым оператором ==

Google
Руслан
08.09.2017
11:45:40
@metalgear ну вот это и есть большой минус. Это заставляет перерисовывать (как минимум пересчитывать) дофига чего. Было бы у них реактивное хранилище - проблем бы не было.
ну на самом деле в том же реакт нужно просто сделать проверку по ссылке, и начинается проверка от верхов, так что все совсем не плохо и можно видеть что перформанс там очень хороший

John
08.09.2017
11:47:10
ну я просто давал комментарий как еще может использоваться свойство иммутабельности, с которым познакомился именно во время работы с react + redux. зло это или добро - я не берусь судить

Lev
08.09.2017
11:47:22
@metalgear именно. Не совпало - перерисовывай (пересчитывай) нафиг все. А если у меня поменялось какое то свойство всего одно и оно отвечает за флажок какой - то при реактивном хранилище перерисуется (пересчитается) только флажок а не весь контейнер

John
08.09.2017
11:47:55
реакт разрулит такой кейс, при условии правильной организации компонентов

Lev
08.09.2017
11:48:11
во... сиди организовывай компоненты

вот мне и разонравится реакт и свалил на vue

John
08.09.2017
11:48:28
ну да, сиди организовывай)

Lev
08.09.2017
11:49:50
Так он проверяет только по тому что reducer вернул. Или я чего не понял? Глубже оно не идет

Igor
08.09.2017
11:49:51
Кстати не многие в курсе, но в котлин есть персист. коллекции https://github.com/Kotlin/kotlinx.collections.immutable

Sergey
08.09.2017
11:50:16
ну как есть.. это инкубатор)

Igor
08.09.2017
11:50:31
Как и корутины ?

Lev
08.09.2017
11:51:01
Короче, вы считаете что вот прям все структуры стоит делать immutable по умолчанию и только если потребуется - изменяемые?

Руслан
08.09.2017
11:51:07
Так он проверяет только по тому что reducer вернул. Или я чего не понял? Глубже оно не идет
в правильной архитектуре каждый компонент смотрит на свои пропсы и думает апдейтится ли ему, в итоге апдейтится только то что нужно и мнгновенно

Mi
08.09.2017
11:51:07
Так по дефолту же коллекции иммутабельные в котлине

Руслан
08.09.2017
11:52:16
в правильной архитектуре каждый компонент смотрит на свои пропсы и думает апдейтится ли ему, в итоге апдейтится только то что нужно и мнгновенно
при этом можно легко делать серверный рендеринг с кешированием, что позволяет отдавать странички с SSR за субсекунды

Lev
08.09.2017
11:53:07
в правильной архитектуре каждый компонент смотрит на свои пропсы и думает апдейтится ли ему, в итоге апдейтится только то что нужно и мнгновенно
Из-за этого приходится постоянно поддерживать правильную архитектуру во время разработки. Чуть что поменялось - перепиливай компоненты, чтобы лишнего не обнволялось. Еще этот shouldComponentUpdate - как ручной привод в самом деле. Зачем этим страдать, когда dom может быть перерисован по событию изменения КУСОЧКА (<- слово пропустил) состояния?

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