@kotlin_lang

Страница 679 из 982
OlegKrikun
20.05.2018
09:05:40
я как то попривык в джаве =)

Жабра
20.05.2018
09:05:45
а мне вот дико не нравится в котлине весь этот замут с нулабл =)
Мне тоже не нравился, долго от него плевался, а потом понял что это вещь. :)

OlegKrikun
20.05.2018
09:06:36
Ну просто что бы код на котлине был не блювотный приходится логику менять по сравнению с явой, иначе будет пестрить от "?"

Vladimir
20.05.2018
09:06:45
Мне тоже не нравился, долго от него плевался, а потом понял что это вещь. :)
Да, я вчера тоже это понял когда писал хз какую по счету проверку на нал )

Google
Vladimir
20.05.2018
09:07:10
Закройте глаза чтобы не выколить их
Так а что не так с кодом то?) Мне интересно уже

OlegKrikun
20.05.2018
09:08:51
имха, котлин сделан так что бы даже херовый дев смог не отстрелить себе ногу или чо более важное, за счёт этого страдает немного локаничность и красота языка - имха без нулабл типов можно было бы обойтись

ISkylake
20.05.2018
09:09:25
Многострочнaя лямбда для однострочной функции, List#forEach, который чуть медленее, насколько я помню

Vladimir
20.05.2018
09:09:30
Сарказм?)
Не, чего?) ?. - не хватает мне на жаве

OlegKrikun
20.05.2018
09:09:36
А вы реорганизуйте логику. :) И норм будет
ну это понятно, я в своём сообщение как раз и писал что без переделки никак

OlegKrikun
20.05.2018
09:10:52
ну и конечно же как не сказать про царицу полей =) про тернарный наш оператор (или как он там называется) =)

Vladimir
20.05.2018
09:11:11
Тернарный )

OlegKrikun
20.05.2018
09:11:34
Жабра
20.05.2018
09:11:36
Больше when

Google
OlegKrikun
20.05.2018
09:12:40
да он редко нужен, но я каждый раз испытываю страдания когда можно было бы коротенько в одну строчку записать, а не мутить 5 строк с ифом (и не уговаривайте меня иф писать в одну строку)

тем более кодестайл котлин-андроид это запрещают =)))

OlegKrikun
20.05.2018
09:15:06
Если короткая строка - лучше в одну, если длинная - имхо, но if else выглядит убого, when лучше.
иф в одну строку всегда херово - потому что там не {} - а без этого можно потом при рефакторинге дел натворить =))))

Жабра
20.05.2018
09:15:11
хероввый дев, к сожалению, пишет wtf?.fuck?.damn()
Ну вот не соглашусь. Иногда такая запись очень даже кстати.

OlegKrikun
20.05.2018
09:15:20
хероввый дев, к сожалению, пишет wtf?.fuck?.damn()
ага, и у него даже не падает =) я вот про это как раз =)

Quantum Harmonizer
20.05.2018
09:15:33
OlegKrikun
20.05.2018
09:19:23
Каких дел?
ну это не совсем по это, а про кейс когда if без {}, но не в одну строку, когда бабезян коментит (удаляет) то что под ифом и код начинает очень странно работать. Кейснемного другой, но всё равно мне (да и судя по гкодестайлам от гугла - не только мне) стрёмно иф без скобок писать

проще как и делает гугл - запретить писать иф без {}

OlegKrikun
20.05.2018
09:20:38
это примерно как нулб в котлине

Quantum Harmonizer
20.05.2018
09:20:40
Что делать? Запретить «бабезян»? :)

OlegKrikun
20.05.2018
09:20:43
тупо и мешает

Quantum Harmonizer
20.05.2018
09:21:14
тупо и мешает
Ну если всё делать нуллабельным, то, конечно, мешает. Профит в том, чтобы делать не-нуллабельным :)

Quantum Harmonizer
20.05.2018
09:22:15
А вообще, мне всегда хочется выставить наружу unmodifiableList(Arrays.asList(values())), но тоже говнокод получается.

balolam
20.05.2018
09:32:20
да что вы говорите =))))))
Если вы не смогли научится писать в парадигме где существует not nullable, то это уже ваша проблема. Для чего же завезли в Java уродливый Optional? Он лучше будет выглядеть?

Google
Dumitru
20.05.2018
09:34:19
как это: lateinit var allRadio: NodeList allRadio = document.querySelectorAll(".radio-inline") превратить в Array / List из HtmlElement что бы можно было использовать .forEach{ it.onclick = {} }

как NodeList превратить в обычный котлиновский List

Quantum Harmonizer
20.05.2018
09:39:11
А как же @NotNull и @Nullable
Плохо. Поменял в одном месте — а всё равно компилируется.

Алексей
20.05.2018
09:39:28
Плохо. Поменял в одном месте — а всё равно компилируется.
Так потому что компилятору чихать на эти аннотации

И это главная проблема - nullable везде, но никто не тыкает тебя в этот факт

отсюда и извечные NPE

Igor
20.05.2018
09:40:35
как это: lateinit var allRadio: NodeList allRadio = document.querySelectorAll(".radio-inline") превратить в Array / List из HtmlElement что бы можно было использовать .forEach{ it.onclick = {} }
Это что за либа? Хотя в любом случае можно взять что-то на подобие val xs = List(nodes.length, nodes::item) xs.forEach { it.onclick = {} }

OlegKrikun
20.05.2018
09:41:13
Если вы не смогли научится писать в парадигме где существует not nullable, то это уже ваша проблема. Для чего же завезли в Java уродливый Optional? Он лучше будет выглядеть?
конено я могу писать код для котлина =) просто я говорю что имха это лишнее =) а оптионал в андроид не завезли, вроде =)

balolam
20.05.2018
09:42:40
конено я могу писать код для котлина =) просто я говорю что имха это лишнее =) а оптионал в андроид не завезли, вроде =)
Не в андроид не завезли, а версия джавы не позволяет. Слова (аргументы) без доводов - пустой трёп. И если вам не нравится что-то, то потрудитесь обосновать это, а не разводит базар

OlegKrikun
20.05.2018
09:43:54
Не в андроид не завезли, а версия джавы не позволяет. Слова (аргументы) без доводов - пустой трёп. И если вам не нравится что-то, то потрудитесь обосновать это, а не разводит базар
ну я выше писал что это делает код менее красывым и перегружает его =) и сделано это для тех кто не может нормально работать с нулбл в яве =)

Алексей
20.05.2018
09:45:23
а можно небольшую вводную? а то я дезориентирован, а интересно поспорить с кем-нибудь

balolam
20.05.2018
09:47:31
ну я выше писал что это делает код менее красывым и перегружает его =) и сделано это для тех кто не может нормально работать с нулбл в яве =)
1. Это делает код менее красивым если вы пишите на Kotlin как на Java, этот оператор лишь замена if (obj != null), что точно менее красиво будет. 2. Обычно такое нужно лишь где мы сами понимаем что может быть null или где у нас граница с Java, значения с которой необходимо интерпретировать как nullablr тип

Alexey
20.05.2018
09:47:55
Я думаю что not nullable by default лучше nullable by default просто потому что явное лучше неявного.

Алексей
20.05.2018
09:49:29
да-да это всё так ) но имха, это лишнее =)
Лишнее - это писать код, который работает неизвестно как. А если твой взгляд вечно цепляется за вопросы - ты рано или поздно задумаешься "А всё ли с этим кодом в порядке?"

я молчу о том, что в котлине завезли smart cast, let/also/... и прочие красивости

OlegKrikun
20.05.2018
09:50:09
Ну дык, кто мешает в java написать код который работает изветно как? =)

Так я и не говорю что не используйте котлин

я не разу не сказал что котлин плох

Google
Алексей
20.05.2018
09:50:58
Ну дык, кто мешает в java написать код который работает изветно как? =)
Не кто, а что - тот факт, что ты не один в команде, но тебя одного хватит, чтобы наляпать ошибок с NPE в неожиданных местах

balolam
20.05.2018
09:51:00
Вам видимо нравится NullPointer)

OlegKrikun
20.05.2018
09:51:07
я просто высказал своё имха что с нулб они перебздели в угоду быдлокодерам которые не осилили нилбл в яве

Вам видимо нравится NullPointer)
когда нормально пишешь их нет =)

Alexey
20.05.2018
09:51:29
Ну конструкция Int? выглядит значительно проще, чем возня с Optional. Легче читается, плюс идет в унисон с другими популярными языками (C#, PHP)

OlegKrikun
20.05.2018
09:52:06
Не кто, а что - тот факт, что ты не один в команде, но тебя одного хватит, чтобы наляпать ошибок с NPE в неожиданных местах
вот я про это и говорю, что сделано для того что бы слабое звено в команде не лажало сильно

Ты ни разу их не ловил?:) чудак-человек
ну при дебаге да конечно =)

Алексей
20.05.2018
09:53:25
Если ты убеждён, что ты супермен, который может писать на Java на 100% без NPE - дело твоё:) а я привык лишний раз подстраховаться, вместо того, чтобы быть таким самоуверенным

Виталий
20.05.2018
09:53:39
Подскажите как получить тип класса у которого есть входящие параметры ?

OlegKrikun
20.05.2018
09:54:33
Bogdan
20.05.2018
09:55:12
вот я про это и говорю, что сделано для того что бы слабое звено в команде не лажало сильно
угу и ты постояно проверяешь на налл, хотя гдето в глубене кода это провеили, в джаве для этого начали использовать аноташки, которые сообща что тут нала нет\есть, но это не гарантировало что какому то умному человеку захочется засунуть туда налл

Виталий
20.05.2018
09:55:48
что?
val claz = Class().javaClass но в Class() требует передать переменную, так что ошибка.

Bogdan
20.05.2018
09:55:48
OlegKrikun
20.05.2018
09:56:16
Bogdan
20.05.2018
09:56:34
Алексей
20.05.2018
09:56:36
когда ты вызываешь метод из либы ? У которой еще вызов 256 ?
как раз печатал, но не стал отправлять

Google
Bogdan
20.05.2018
09:56:47
ну там я проверю на нул =)
и их в итоге 256 штук этих проверок

OlegKrikun
20.05.2018
09:57:04
и их в итоге 256 штук этих проверок
или врапер вокруг либы =)

Виталий
20.05.2018
09:57:19
откуда тебе нужно получить клаcс ?
val claz = ЛюбойКлассСВходящей Переменной().javaClass

OlegKrikun
20.05.2018
09:57:19
в общем мне кажется я донёс своё мнение, ваше мнение я тоже понял, пойду слив у умывальника мутить =))))

Виталий
20.05.2018
09:57:58
с принимающей*

Алексей
20.05.2018
09:58:13
в общем мне кажется я донёс своё мнение, ваше мнение я тоже понял, пойду слив у умывальника мутить =))))
ты говоришь, что можешь предугадать 100% NPE, мы говорим, что лучше подстрахуемся

вот и всё

Alexey
20.05.2018
09:58:20
При nullable by default ты не можешь быть уверен что внутри цепочки вызовов где-то [ошибочно] все-таки проскочит null. Хуже того - когда конкретно твой код завалится (или код, базированный на твоем завалится) - проблема будет недостаточно локализована. Скорее всего, ты добавишь проверку на null у себя, либо же уйдешь в дебри разбираться откуда в цепочке null взялся. Not nullable by default гарантирует идеальную точность локализации проблемы. Компилятор не пропустит передачу nullable аргумента в параметр который объявлен как not nullable. Это элементарное quality of life улучшение которое экономит время на дебаге.

Dumitru
20.05.2018
09:58:22
нашел https://kotlinlang.org/api/latest/jvm/stdlib/org.w3c.dom/-radio-node-list/index.html

Bogdan
20.05.2018
09:58:29
val claz = ЛюбойКлассСВходящей Переменной().javaClass
что бы получить класс, можно заюзать obj::class.java

Виталий
20.05.2018
09:59:12
OlegKrikun
20.05.2018
09:59:21
Очень может быть вы все и правы, но я редко работаю в проектах где я не один =) возможно из за этого у меня своя правда, у вас своя =)))

Alexey
20.05.2018
10:06:46
Плюс, not nullable by default облегчает взаимодействие с чужими кусками кода (и речь не о количестве работников на проекте - мы еще также используем чужие либы) которые не null-safe. Если ты пытаешься интегрировать не null-safe результат внутрь своей null-safe кодбазы, компилятор заставит тебя сделать проверку еще на самой первой точке входа, и далее ты будешь работать в полностью безопасном режиме. Если в процессе рефакторинга эта проверка потеряется - опять же, проект даже не скомпилируется. Без null-safety, ты либо вынужден, как писали выше, пихать проверки на null при каждом обращении чтобы получить действительно безопасный код, либо же рискуешь совершенно непонятно завалится когда кто-нибудь изменит точку входа и забудет в ней сделать проверку на null.

Причем это будет самый ужасный тип баги, который "вот никогда такого не было, и в модуле который 2 года работал идеально оно таки случилось".

Жабра
20.05.2018
10:22:10
Плюс, not nullable by default облегчает взаимодействие с чужими кусками кода (и речь не о количестве работников на проекте - мы еще также используем чужие либы) которые не null-safe. Если ты пытаешься интегрировать не null-safe результат внутрь своей null-safe кодбазы, компилятор заставит тебя сделать проверку еще на самой первой точке входа, и далее ты будешь работать в полностью безопасном режиме. Если в процессе рефакторинга эта проверка потеряется - опять же, проект даже не скомпилируется. Без null-safety, ты либо вынужден, как писали выше, пихать проверки на null при каждом обращении чтобы получить действительно безопасный код, либо же рискуешь совершенно непонятно завалится когда кто-нибудь изменит точку входа и забудет в ней сделать проверку на null.
Согласен. Ко всему прочему, not nullable by default намного логичнее, ведь когда пишешь, к примеру val user: User то подразумеваешь что там может лежать только User, а не null.

dimiii
20.05.2018
12:40:33
У сторонников nullable by default какая - то инверсия-перверсия приоритета. Алё, immutable, non-nullable, public - это как раз то что чаще всего встречается в коде и требует дефолтности, тут даже обсуждать нечего, это даже не вопрос вкуса

Quantum Harmonizer
20.05.2018
12:40:53
про public поспорил бы

dimiii
20.05.2018
12:41:39
про public поспорил бы
согласен, но все равно благодарен разрабам

я про паблик добавил для пущей весомости доводов )

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