@kotlin_lang

Страница 969 из 982
Google
Денис
23.10.2018
11:09:48
OneToMany - это когда геттер в DTO лезет в БД?
Я ничего не говорю о своём отношении к этому подходу. Я говорю о том, что это нельзя так же удобно заменить, если оно где-то уже есть, махнув сплеча и удалив к чёрту аннотации.

Andrey
23.10.2018
11:09:51
Ну в случае с @Transactional - наверное, да. И то надо смотреть. А если там подъезжает какой-то @OneToMany?
Что сейчас декларирует @OneToMany ? Сейчас он декларирует то, как комбинируются некоторые действия (лябмды) над таблицами в БД, чтобы сконструировать объект. Вот и декларировать это надо как комбинацию (композицию или ещё что) лямбд, а не как фиг знает что, спрятанное в фреймворке фиг знает где через рефлексию.

Vladimir
23.10.2018
11:11:07
Я ничего не говорю о своём отношении к этому подходу. Я говорю о том, что это нельзя так же удобно заменить, если оно где-то уже есть, махнув сплеча и удалив к чёрту аннотации.
А не следует заменять плохие решения на эквивалентные, их лучше заменить на более адекватные. Если абстракция течёт чаще, чем помогает, она не очень.

Kirill
23.10.2018
11:11:10
OneToMany - это когда геттер в DTO лезет в БД?
Да, причём этот код писал не ты )

Денис
23.10.2018
11:11:43
Что сейчас декларирует @OneToMany ? Сейчас он декларирует то, как комбинируются некоторые действия (лябмды) над таблицами в БД, чтобы сконструировать объект. Вот и декларировать это надо как комбинацию (композицию или ещё что) лямбд, а не как фиг знает что, спрятанное в фреймворке фиг знает где через рефлексию.
Сложный вопрос, кстати. Ведь это для большого количества случаев упрощает и ускоряет разработку софта - люди вон в этой комбинации лямбд (кстати, где и как их декларировать удобно?) тоже обосраться могут, с не меньшим, а до какого-то момента и большим шансом, чем фреймворк. Это я сейчас вполне осознанно адвоката дьявола играю, если что.

Денис
23.10.2018
11:13:27
Вам не кажется, что трейд офф слишком дорогой? Из серии: "давайте отключим основную фичу языка, чтобы нам было удобно".
Трейд-офф между "ну тут магия" и "теперь-то без магии, но эту логику разметало в 5 разных компонентов, как бы не заблудиться по пути" - неоднозначный.

Boris
23.10.2018
11:13:37
В случае с метаданными в коде, придётся иметь дублирование меты и класс бина

Денис
23.10.2018
11:13:40
Это если говорить о произвольной аннотации, не о конкретно @OneToMany.

Kirill
23.10.2018
11:14:43
Сложный вопрос, кстати. Ведь это для большого количества случаев упрощает и ускоряет разработку софта - люди вон в этой комбинации лямбд (кстати, где и как их декларировать удобно?) тоже обосраться могут, с не меньшим, а до какого-то момента и большим шансом, чем фреймворк. Это я сейчас вполне осознанно адвоката дьявола играю, если что.
Упрощает и ускоряет в каких случаях? Видели стектрейс фреймовика на аннотациях (не обязательно хибер)? Давайте ускорение и упрощение измерять не только для идеальных случаев, а учитывать также кейсы, когда случатся жопа. Впрочем, с поинтом "обосраться в лямбдах" согласен.

Andrey
23.10.2018
11:15:10
Трейд-офф между "ну тут магия" и "теперь-то без магии, но эту логику разметало в 5 разных компонентов, как бы не заблудиться по пути" - неоднозначный.
Логику и в ORM фреймворках разметало по куче разных компонентов, только в них поверх этого ещё навернули магии, чтоб уж точно заблудиться по пути, если фреймворк начнёт бажить.

Денис
23.10.2018
11:15:57
Упрощает и ускоряет в каких случаях? Видели стектрейс фреймовика на аннотациях (не обязательно хибер)? Давайте ускорение и упрощение измерять не только для идеальных случаев, а учитывать также кейсы, когда случатся жопа. Впрочем, с поинтом "обосраться в лямбдах" согласен.
Ну вот и измеряют - если на 10 успешных проектов придёт 1 стрёмный стектрейс, но на 10 успешных проектах было сэкономлено условно 15% времени на каждом, то можно позволить себе потупить на одиннадцатом.

Google
Денис
23.10.2018
11:17:24
Мне кажется статистика обратная
Слова "кажется" и "статистика" в одном предложении плохо сочетаются же. :) Здесь отмечу, что vocal minority обычно очень сильно скашивает впечатления ещё.

Kirill
23.10.2018
11:17:35
Ну вот и измеряют - если на 10 успешных проектов придёт 1 стрёмный стектрейс, но на 10 успешных проектах было сэкономлено условно 15% времени на каждом, то можно позволить себе потупить на одиннадцатом.
Тупить приходится днями и неделями, это раз. Основная причина всё же ИМХО - историческая, а не удобство/эффективность. Лямбды в джаву завезли недавно, а фреймовики популярные родились в те времена, когда и дженериков-то не было.

Денис
23.10.2018
11:17:54
Если что, я в целом всячески ратую за компилируемость (и проверки на этапе компиляции) и строгую типизацию. Я не уверен, where I stand в этом вопросе, здесь спорю, чтобы показать, почему люди могут считать, что вы не правы.

Kirill
23.10.2018
11:18:22
Да, я прочитал про адвоката дьявола ) Хоть и после того, как ответил ?

Andrey
23.10.2018
11:19:01
Я тоже пользуюсь фреймворками на аннотациях, если что. Даже сам небольшие писал одно время. Мне они не нравятся не вот просто потому, что не нравятся, а потому, что много магии, как тестировать не понятно, дебаг адов, проверок на этапе компиляции никаких.

Kirill
23.10.2018
11:19:24
Тем не менее рассуждения об эффективности и привычности аннотаций - сильно похожи на натягивание совы на глобус. Когда эти фрэймовики писались - выбора-то особо не было

Alexandr
23.10.2018
11:20:55
Первое - это описания таблиц
я про это и говорил

Quantum Harmonizer
23.10.2018
11:21:12
Andrey
23.10.2018
11:21:47
Тем не менее рассуждения об эффективности и привычности аннотаций - сильно похожи на натягивание совы на глобус. Когда эти фрэймовики писались - выбора-то особо не было
Ну значит есть задача для open source проектов: DI без аннотаций, сравнимый или превосходяший по удобству использования со Spring. ORM без аннотаций, сравнимый или превосходяший по удобству использования с hibernate.

Vladimir
23.10.2018
11:21:54
я про это и говорил
В таком случае - да, это главное, что генерит jOOQ. Сущности можно и не генерить, это по вкусу.

Andrey
23.10.2018
11:22:21
не соглашусь
Ок. Применим вашу аргументацию: "не соглашусь с вашим несогласием" ?

Kirill
23.10.2018
11:22:24
И в продолжение моей темы. Иногда нужно иметь версии схемы чтобы накатывать миграции. Опять же, на уровне языка реализовать это сложно.
Шальная мысль. У нас же есть система хранения версий, git тот же самый. Как бы его подружить с ликвибейзами всякими. Тогда озвученная проблема бы решилась... наверное. Это даже не мысль, полуфабрикат

Quantum Harmonizer
23.10.2018
11:23:52
Эм. между чем и чем? Аннотациями и xml? )
Ну что за стулья. С одной стороны процедурное метапрограммирование и борьба против ОО-языка, с другой — собственно, любовь к ООП.

Google
Денис
23.10.2018
11:24:55
DI - а чем Guice плох в этом плане? DSL же
Guice такой бойлерплейтистый по впечатлениям - как итог, по "ощущениям", т.е. субъективному удобству, проигрывает спринговому DI. По богатству фич сравнивать не берусь, мало опыта.

Sergey
23.10.2018
11:25:30
jOOQ у них лицензия сложная ,?

Quantum Harmonizer
23.10.2018
11:26:03
А можно про процедурное метапрограммирование ссылок? Любопытно. Это же в рамках java?
Можно вот так, но я уже не помню, что там написано и насколько я с этим согласен. https://www.yegor256.com/2016/04/12/java-annotations-are-evil.html https://www.yegor256.com/2014/12/01/orm-offensive-anti-pattern.html

Руслан
23.10.2018
11:26:14
jOOQ у них лицензия сложная ,?
Для опенсорс базы, опенсорс jooq

Sergey
23.10.2018
11:26:32
Vishnyakov
23.10.2018
11:26:33
Для опенсорс базы, опенсорс jooq
юзаю для постгра, доволен

Sergey
23.10.2018
11:26:44
Оглядываться надо

Kirill
23.10.2018
11:27:28
Guice такой бойлерплейтистый по впечатлениям - как итог, по "ощущениям", т.е. субъективному удобству, проигрывает спринговому DI. По богатству фич сравнивать не берусь, мало опыта.
Кому бойлерплейт, а кому неплохое средство навигации по коду. Тут начинается вкусовщина, пожалуй. Но мне приятней в гусёвом модуле найти нужный биндинг и go to definition, чем вспоминать кучу спринговых соглашений + кучу локальных проектных костылей поверх них

Руслан
23.10.2018
11:27:59
Опасно
Apache 2.0, что тут опасного. Самая хорошая лицензия для оперсорса который в комерческом продукте используется. Не нужно путать людей.

Quantum Harmonizer
23.10.2018
11:28:17
что с аннотациями не так?
Не пробовал чат читать? :trollface:

Денис
23.10.2018
11:28:52
Не пробовал чат читать? :trollface:
Так проблема-то, кажется, даже у людей в чате не с аннотациями как таковыми, а их "некошерным" использованием?

Kirill
23.10.2018
11:29:36
Ну вот жеш

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

Vladimir
23.10.2018
11:30:59
А если базу менять?
Переехать на оракл вряд ли дороже и сложнее покупки jOOQ меньше, чем на порядок

Руслан
23.10.2018
11:31:27
А если базу менять?
Ко всем опенсор базам идет Apache 2.0 JOOQ, ко всем платным идет платный JOOQ. Не думаю что после покупки оракла за миллионы нефти у вас не останется пару сотен на отличную библиотеку.

Google
Sergey
23.10.2018
11:34:05
Ну да - вот просто взял и решил... Понятно, если надо, то вперёд. Но для Пет проектов начинать пользоваться... Чтоб потом натолкнуться на лицензионные ограничения... Или заранее покупать...

Sergey
23.10.2018
11:35:10
Ну я не могу заранее все покупать напрозапас...

Денис
23.10.2018
11:35:39
Ну я не могу заранее все покупать напрозапас...
А зачем? Или базы десять раз меняются на неопенсорсные в ходе разработки пет-проекта?

Nick
23.10.2018
11:35:41


Vladimir
23.10.2018
11:36:08
Пет-проекты с ораклом ?

Andrey
23.10.2018
11:36:19
DI без аннотаций ваще встроен в язык, а интерфейс для хранения данных я дописываю. :)
Это где он в Kotlin встроен в язык? В Haskell или Scala - да, соглашусь, а в Kotlin что-то не осознал, как.

Vladimir
23.10.2018
11:36:28
Запятая

Quantum Harmonizer
23.10.2018
11:36:30
ВНЕЗАПНО or делает не то, что ты ожидаешь.

Nick
23.10.2018
11:37:11
Запятая
Понял, спасибо

Sergey
23.10.2018
11:38:17
Зачем изучать инструмент, который потом не сможешь использовать?

Quantum Harmonizer
23.10.2018
11:39:16
читал, не убедили
ну если просто повторять тот вопрос, который тут уже поднят, то толку и не будет

Руслан
23.10.2018
11:40:30
Зачем изучать инструмент, который потом не сможешь использовать?
Хватить крутить одно и то же по кругу. Предлагаю тебе просвлетляться по тому как работает опенсорс и лицензии в любом другом чате, например @jvmchat, тут эта тема закончена

Google
Денис
23.10.2018
11:42:03
ну если просто повторять тот вопрос, который тут уже поднят, то толку и не будет
Кстати упомянутую выше реплику я к чему писал - если есть необходимость добавлять метаданные к полям (и не строить на этой основе магическую логику, если не хочется), то вроде б аннотации вполне уместны, или что я упустил?

Kirill
23.10.2018
11:55:04
ide context integration, один клик покажет тебе бин который будет заинжекчен
Заход через плагин IDE на мой вкус - костыль. Я не хочу надеяться, что авторы плагина предусмотрели все варианты, в т. ч. те соглашения, что накозлоумил местный техлид/архитектор. Я знаю, что плагины пишут такие же ленивые раздолбаи, как я :) Я не хочу запоминать дополнительные пункты меню/сочетания клавиш, мне есть куда потратить силы и память более продуктивно. В идеале, я хочу опираться на компактное ядро фич IDE (Alt+F7, Ctrl+B) и фич моего мозга, чтобы эффективно навигироваться по проекту. Всякие там ссылочные прозрачности, лямбды, ФП приближают меня к этой цели, аннотации - отдаляют.

Alexandr
23.10.2018
11:56:00
бред, ну да ладно

Kirill
23.10.2018
11:58:56
Кстати упомянутую выше реплику я к чему писал - если есть необходимость добавлять метаданные к полям (и не строить на этой основе магическую логику, если не хочется), то вроде б аннотации вполне уместны, или что я упустил?
В принципе верно. Только вот чем меньше магии пихать в аннотации, тем менее они полезны с точки зрения "скорости разработки" - читай "быстрей в продакшен, некогда рефакторить, писать юнит-тесты и думать об архитектурной красоте"

Alexey
23.10.2018
12:04:25
бред, ну да ладно
Ну как всегда вобщем то, все аргументы против божественного спринга - бред

Денис
23.10.2018
12:05:13
А, ну вот, вопрос снят

Andrey
23.10.2018
12:06:18
ох и дискуссия, так что юзать под базу ?

Igor
23.10.2018
12:06:37
монгу?

Quantum Harmonizer
23.10.2018
12:06:46
ох и дискуссия, так что юзать под базу ?
А почему должен быть готовый ответ?)

Andrey
23.10.2018
12:07:25
вопрос был в пакете, а не базе

Vladimir
23.10.2018
12:07:39
А как противники runtime-аннотаций с JSON работают? С помощью кодогенерации?

Andrey
23.10.2018
12:07:43
а то тут разные мысли были

Vladimir
23.10.2018
12:08:25
хешмапы гоняем
Ну тогда уж org.json лучше

Igor
23.10.2018
12:08:36
ну хотя есть вариант получше с open-api

Quantum Harmonizer
23.10.2018
12:14:54
А как противники runtime-аннотаций с JSON работают? С помощью кодогенерации?
Объявляю структуру в специальном объекте, который описывает поля джейсона.

Kirill
23.10.2018
12:16:53
А как противники runtime-аннотаций с JSON работают? С помощью кодогенерации?
объявляют toString, принимающий объект-стратегию сериализации ? Объект-стратегия гибко конфигурится через XML... или нет, поднимает REST-API, вот

Alexandr
23.10.2018
12:18:01
А как противники runtime-аннотаций с JSON работают? С помощью кодогенерации?
я видел что делают скалисты, у них в dto методы fromJson() и toJson(), которые соответственно принимают и отдают JsonObject

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