Size: a a a

Kotlin Community

2020 November 09

KG

Kirill Gamazkov in Kotlin Community
Алексей Овсянников
Я не понял, к чему вы про это кодогенерацию вообще
А вы представьте: нужно вам сделать процессор аннотаций @Transactional или @Cached. Ну так, мозги поразмять. Как поступите?
Скорее всего, пойдёте через рантайм-генерацию всяких проксей. И тот, кто будет разбираться в этих кишочках потом, вынужден будет в голове прикидывать, какой же код в итоге сгенерится.
А если это через лямбды делать, то будет сильно проще и без лишних сущностей - просто метод, один, в коде которого даже брейкпоинт можно поставить.
источник

KG

Kirill Gamazkov in Kotlin Community
Alexandr Emelyanov
выключаем ФП головного мозга :)
Я неплхо представляю, где подходит ФП, а где у него слабые места, не надо тут )
источник

AE

Alexandr Emelyanov in Kotlin Community
Kirill Gamazkov
Я отвечал на вопрос, что из опыта со спрингом породило аллергию на рефлексию
значит что то не так делали, рефлексия тут по месту и её не так много. опять таки, как правильно заметили - никто не заставляет это все использовать

взять тот же пример с транзакциями - есть transaction template, ему передается лямбда
источник

АО

Алексей Овсянников... in Kotlin Community
Kirill Gamazkov
А вы представьте: нужно вам сделать процессор аннотаций @Transactional или @Cached. Ну так, мозги поразмять. Как поступите?
Скорее всего, пойдёте через рантайм-генерацию всяких проксей. И тот, кто будет разбираться в этих кишочках потом, вынужден будет в голове прикидывать, какой же код в итоге сгенерится.
А если это через лямбды делать, то будет сильно проще и без лишних сущностей - просто метод, один, в коде которого даже брейкпоинт можно поставить.
Вот и я не понимаю, зачем вам аннотации для транзакций
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Ну ладно, а то я думал, что "не читал, но осуждаю".
Этот кактус я жру ежедневно )
источник

AN

Alexander Nozik in Kotlin Community
Кто там страдал?
источник

KG

Kirill Gamazkov in Kotlin Community
Алексей Овсянников
Вот и я не понимаю, зачем вам аннотации для транзакций
Транзакции - только один из примеров. В спринге же на аннотациях примерно всё
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Я неплхо представляю, где подходит ФП, а где у него слабые места, не надо тут )
Речь не о представлении, а о том, что вы сыпете ФП штампами без обсуждения.
источник

АО

Алексей Овсянников... in Kotlin Community
Kirill Gamazkov
Транзакции - только один из примеров. В спринге же на аннотациях примерно всё
Это для меня одна из причин его не юзать:)
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Транзакции - только один из примеров. В спринге же на аннотациях примерно всё
Аннотации не имеют отношения к рефлексии и ФП. Вы можете обрабатывать аннотации не рефлективно, а пре-процессором, от этого их суть не поменяется
источник

АО

Алексей Овсянников... in Kotlin Community
Alexander Nozik
Аннотации не имеют отношения к рефлексии и ФП. Вы можете обрабатывать аннотации не рефлективно, а пре-процессором, от этого их суть не поменяется
+
источник

АО

Алексей Овсянников... in Kotlin Community
Если не ошибаюсь, местная сериализация так и работает
источник

AN

Alexander Nozik in Kotlin Community
Я подчеркну. Я не противник ФП подхода. Я сам его использую. Я противник подхода ради подхода.
источник

АО

Алексей Овсянников... in Kotlin Community
Алексей Овсянников
Если не ошибаюсь, местная сериализация так и работает
Имхо, крайне приятная вещь
источник

AN

Alexander Nozik in Kotlin Community
Алексей Овсянников
Если не ошибаюсь, местная сериализация так и работает
да
источник

AE

Alexandr Emelyanov in Kotlin Community
Kirill Gamazkov
А вы представьте: нужно вам сделать процессор аннотаций @Transactional или @Cached. Ну так, мозги поразмять. Как поступите?
Скорее всего, пойдёте через рантайм-генерацию всяких проксей. И тот, кто будет разбираться в этих кишочках потом, вынужден будет в голове прикидывать, какой же код в итоге сгенерится.
А если это через лямбды делать, то будет сильно проще и без лишних сущностей - просто метод, один, в коде которого даже брейкпоинт можно поставить.
глаза боятся - руки делают. раздуваете из мухи слона, реализацию аспекта найти не сложно
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Аннотации не имеют отношения к рефлексии и ФП. Вы можете обрабатывать аннотации не рефлективно, а пре-процессором, от этого их суть не поменяется
Давайте всё-таки вспомним, что это в контексте спрингов и хиберов, где аннотации без аннотейшен процессоров - редкое исключение, а не правило.
А так я не против аннотаций, инструмент как инструмент. То, что всякие спринги его абьюзят - это проблема спрингов, а не аннотаций
источник

KG

Kirill Gamazkov in Kotlin Community
Алексей Овсянников
Это для меня одна из причин его не юзать:)
Вот следующую работу я хочу тоже без спринга, а пока этот кактус - основа моего рациона
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Давайте всё-таки вспомним, что это в контексте спрингов и хиберов, где аннотации без аннотейшен процессоров - редкое исключение, а не правило.
А так я не против аннотаций, инструмент как инструмент. То, что всякие спринги его абьюзят - это проблема спрингов, а не аннотаций
Во, тут со всем согласен. И мы приходим к мысли о том, что рефлексия сама по себе тоже не плоха.
источник

AE

Alexandr Emelyanov in Kotlin Community
Kirill Gamazkov
Транзакции - только один из примеров. В спринге же на аннотациях примерно всё
что еще из аннотаций на рефлексии?) di со сканом класпаса?)

ОБОЖЕ РЕФЛЕКСИЯ!!! да вроде все di со сканом так делают
источник