2019-06-26 - Андрей Когунь | Рефлексия и кодогенерация

Java разработчики, особенно те, кто заняты в заказной разработке, находятся в постоянной борьбе за то, чтобы писать меньше бойлерплейт кода, будь то тривиальные геттеры-сеттеры, конструкторы и т.п. или CRUD репозитории и контроллеры и часто ответом является кодогенерация в разных видах: поддержка генерации в IDE, генерация байткода при помощи Lombok, процессоры аннотаций порождающие новый код, фреймворки, позволяющие по описанию модели получить готовое (почти) приложение и много чего еще, не исключая новые и не очень JVM языки, которые позволют писать более лаконичный код и реализовывать DSL-и для решения прикладных задач.

С неоспоримой пользой в самых простых случаях приходят и ограничения, не позволяющие реализовать то, что требуется в конкретном проекте и хуже всего, когда генерируемый код является источником дефектов, которые сложно обнаружить, а для исправления требуются специальные “костыли” поверх того, что генерируется.

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

✎ редактировать