@kotlin_lang

Страница 703 из 982
dimiii
12.06.2018
15:20:21
Меня лично, всегда изумлял http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/net/URL.java авторства самого Гослинга

Alexander
12.06.2018
15:20:28
Quantum Harmonizer
12.06.2018
15:20:50
А что там не так?
extends Hashtable как минимум, это НЕ МОГЛО пройти кодревью, и, наверное, было кем-то засунуто прямо в мастер

Alexander
12.06.2018
15:20:51
Они вроде в языке ничего не портят...

Google
Alexander
12.06.2018
15:21:18
HashTable тогда был жив. А потом умер

Quantum Harmonizer
12.06.2018
15:21:18
Так это когда было
а тогда понятие говнокода было иным?

Vladimir
12.06.2018
15:21:31
А что там не так?
То, как оно работает с дженериками, как минимум

dimiii
12.06.2018
15:21:36
Тогда j.u.collections и не было природе еще

Anton
12.06.2018
15:21:58
вы про префы или про проперти

Quantum Harmonizer
12.06.2018
15:22:18
То, как оно работает с дженериками, как минимум
когда его писали, не было дженериков)

Alexander
12.06.2018
15:22:44
Оно все создавалось как альтернатива ini. И поверьте мне (я еще на паскале писал, когда он жив был), очень хорошая инициатива. Сейчас, конечно, давно протухло.

Vladimir
12.06.2018
15:23:44
когда его писали, не было дженериков)
Ну с остальными классами коллекций их же нормально интегрировали Но корни проблем конечно в extends Hashtable

Alexander
12.06.2018
15:23:45
Так и он был хорош... по тем временам.

Quantum Harmonizer
12.06.2018
15:24:05
Так и он был хорош... по тем временам.
нет, он экстендит коллекцию. Нефинальные коллекции — тоже косяк

Google
Vladimir
12.06.2018
15:24:45
кого с кем интегрировали?
Дженерики с Java Collections Framework

Quantum Harmonizer
12.06.2018
15:25:27
Дженерики с Java Collections Framework
добавление дженериков в класс не ломает существующий код

а вот extends GenericClass<Concrete arguments> ломает

Alexander
12.06.2018
15:26:16
Мы сейчас это понимаем. По тем временам - это считалось годным решением. Объектный угар, наследование и полиморфизм. Я думаю, что класс вообще создавался как финальный для конкретного внутреннего использования. Я и в более позднем коде такие решения видел.

Vladimir
12.06.2018
15:27:46
добавление дженериков в класс не ломает существующий код
Да, но в новом коде приходится работать с Map<Object, Object>, хотя на деле ключи это строки

Quantum Harmonizer
12.06.2018
15:28:16
Alexander
12.06.2018
15:29:11
Ими вообще лучше не пользоваться. Не понятно, зачем.

Egor
12.06.2018
15:30:35
Парсить .properties файлы вручную

...а, у меня удалили стикер

ну да

Quantum Harmonizer
12.06.2018
15:31:07
Ими вообще лучше не пользоваться. Не понятно, зачем.
очень неплохая альтернатива ini, но лучше не пользоваться?

...а, у меня удалили стикер
они удаляются автоматом

Egor
12.06.2018
15:31:30
Ага, я забыл

Alexander
12.06.2018
15:31:40
А кто сейчас ini пользуется? Это было в доXMLную эру

Quantum Harmonizer
12.06.2018
15:32:15
Alexander
12.06.2018
15:33:07
Ну для хранения конфигурации да.

Quantum Harmonizer
12.06.2018
15:35:10
Ну для хранения конфигурации да.
<PostgreSQL> <login>user</login> <password>qwerty123</password> </PostgreSQL> хмм, заманчиво

Alexander
12.06.2018
15:36:44
Не вижу, в чем проблема.

Quantum Harmonizer
12.06.2018
15:37:14
ну если нужна хоть какая-то иерархия, YAML гораздо привлекательнее

Melodeiro
12.06.2018
15:37:16
Эра json еще не наступила?:)

Google
dimiii
12.06.2018
15:37:39
etcd!

вроде все варианты рассмотрели, нет?

Alexander
12.06.2018
15:38:10
Да любой иерархический формат. XML просто встроен в JVM, остальное нет.

Правда к вопросу о граблях, мне очень не нравится стандартная реалзиация XML

Quantum Harmonizer
12.06.2018
15:39:00
Да любой иерархический формат. XML просто встроен в JVM, остальное нет.
В JDK? встроенные парсеры использовать не особо приятно

Alexander
12.06.2018
15:39:33
Да, там API кошмарненький :)

Минимальная Json библиотека всего несколько десятков килобайт. Если и так таскаешь с собой kotlin-stdlib, то в общем-то не жалко.

Quantum Harmonizer
12.06.2018
15:43:13
как жаль, что JSON — такое говно

* в контексте статических языков

dimiii
12.06.2018
15:43:33
Да любой иерархический формат. XML просто встроен в JVM, остальное нет.
Кстати, походу JSON API в десятке так и не зарелизили. Очень видно, как востребовано.

Alexander
12.06.2018
15:53:56
Javax.json примерно такой же кошмарный, как и стандартный XML. Думаю, что поэтому и не запихали.

как жаль, что JSON — такое говно
Все что угодно, что превращается в строку. Можете взять BSON, но забудьте тогда про человекочитаемость.

Quantum Harmonizer
12.06.2018
15:56:07
Все что угодно, что превращается в строку. Можете взять BSON, но забудьте тогда про человекочитаемость.
Отвратная концепция token = Number | String | Map<String, token> | List<token>, к сожалению, остаётся.

Alexander
12.06.2018
15:56:22
А что в ней плохого?

Quantum Harmonizer
12.06.2018
15:57:01
А что в ней плохого?
ужасный лапшекод при попытке использовать из статического языка

Alexander
12.06.2018
15:58:08
Не вижу проблемы, честно говоря. Пишется один раз when на входе и усе. Я правда не исползую Json внутри кода, только при чтении конфигурации.

Melodeiro
12.06.2018
15:58:15
ужасный лапшекод при попытке использовать из статического языка
Так если писать конфиг на нем, и использовать сериализатор и десереализатор в одной программе, то лапшекода не будет же

Пишем файл в пару строк, читаем тоже, и у нас готовые объекты, коллекции в памяти

Alexander
12.06.2018
15:59:26
Нет.

Google
Alexander
12.06.2018
15:59:32
Зависит от того, что именно надо

Если на входе сразу превращать в свою структуру, то эта штука вообще один раз встречается. Как верно было замечено, можно вообще взять что-то типа jackson и просто напрямую превращать файлы в объекты (я так не делаю, но это можно).

Обычно кстати такой фигни нет, поскольку при чтении заранее знаешь, что именно ожидаешь увидеть в поле с определенным именем. Надо только поставить проверку на ошибку.

Quantum Harmonizer
12.06.2018
16:01:56
Можно хлебнуть говна. Можно совсем немножко, а можно посредством библиотеки.

Egor
12.06.2018
16:02:09
Просто в котлине все еще нет паттерн матчинга

*картинка с ослом из шрека*

Alexander
12.06.2018
16:02:49
Вот уж священная корова этот ваш паттерн матчинг.

Я понимаю, зачем бывают нужны тайп-классы, но полноценный паттерн матчинг - это по-моему просто фетиш.

Quantum Harmonizer
12.06.2018
16:03:58
Egor
12.06.2018
16:04:03
А что делать, он слишком удобный

Quantum Harmonizer
12.06.2018
16:04:12
Alexander
12.06.2018
16:04:25
Поддерживаю предыдущего оратора

Egor
12.06.2018
16:04:30
Как раз чтобы структуры разбирать

Но да, в Котлине не приживется

Quantum Harmonizer
12.06.2018
16:04:48
Как раз чтобы структуры разбирать
нетипизированные? с ними лучше не работать вовсе

Igor
12.06.2018
16:04:53
А как же компиляторы писать без этого ;)

Alexander
12.06.2018
16:04:59
Где-то была дискуссия с людьми от JetBrains, они сказали, что будут думать про паттерн матчинг, если кто-нибудь реально приведет пример, где без него никак. Никто не привел.

Quantum Harmonizer
12.06.2018
16:05:04
А как же компиляторы писать без этого ;)
вот, я только вспомнил, что Браслав говорил!

Alexander
12.06.2018
16:05:27
Вот компилятор - это был как раз в этой дискусси единственный use-case/

Vladimir
12.06.2018
16:07:08
Google
Egor
12.06.2018
16:07:19
Хороший пример адекватного паттерн-матчинга это, например, в динамическом функциональном языке жисон разбирать (привет эликсир)

Alexander
12.06.2018
16:07:56
Не надо пожалуйста динамических функциональных языков.

Никто не сомневается, что чисто функциональные языки без этого не живут, что статические, что динамические, ну а нам-то, рыбам, зачем.

Egor
12.06.2018
16:10:47
до ума не доведен (пока?)

Я уже не вспомню, в чем проблема была, когда делаешь проверку на null, а оно не кастится к не-нулабл типу

Вспомнить бы кейс

dimiii
12.06.2018
16:11:59
до ума не доведен (пока?)
Ну это уже на уровне городских легенд.

Egor
12.06.2018
16:12:34
Да нет, траблы иногда вполне осязаемые

dimiii
12.06.2018
16:12:56
Вспомнить бы кейс
Я бы предложил отсутствие глубокого деструктурирования, но вот это совсем ни разу не понадобилось пока

Igor
12.06.2018
16:15:33
Просто в котлине все еще нет паттерн матчинга
(а в чем проблемма взять скалу?)

Egor
12.06.2018
16:16:06
Слишком мейнстримно, камон

Alexander
12.06.2018
16:16:20
И убиться об нее :)

Sergey
12.06.2018
16:20:40
ven
12.06.2018
18:29:36
сорри за офтоп. Отстал.Не нашел Почему в Идее в Джаве переменные предваряются "val" вместо их типа (с какого-то врем. помимо SAM замены на лямбды, и до кликатна коде)? Разве в джаве тоже val уже вводится ?

1337
12.06.2018
18:30:53
java10

ven
12.06.2018
18:33:44
а убрать это (только это, не лямбды) можно?

ven
12.06.2018
18:38:17
в Джаве(не котлине) все кр.final мутабельны. неудобно. путаешь сырцы с котлином токо.

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