Как стать автором
Обновить

Комментарии 11

Спасибо.
Изучаю сейчас Java, не встречала, что можно аннотации объединять.

Вам спасибо) Мне очень приятно, что моя статья показалась вам интересной!

Я правильно понимаю статья про скорее про Spring, а не про чистую Java?

Да, вы абсолютно правы! Я сейчас же внесу ясность. Спасибо, что указали на неточность!

Кстати, да! Автор не указал (впрочем, в том контексте в котором он это делает - скорее всего даже не задумывался - потому что внутренние аннотации фреймворка только так и делают) что это исключительно spring-based штука, и работает оно только при доступе к аннотациям через сервисные классы спринга!

"...For alias semantics to be enforced, annotations must be loaded via the utility methods in AnnotationUtils. Behind the scenes, Spring will synthesize an annotation by wrapping it in a dynamic proxy that transparently enforces attribute alias semantics for annotation attributes..." (C) Spring docs

Да, вы абсолютно правы, я даже и не задумался в контексте происходящего! Поправил текст, что бы исключить недопонимание. Спасибо!)

Это чтоб враги (коллеги или любой, кто ваш код потом лопатить будет) не догадались? Так можно не только анотации прятать. Можно, чтобы вместо блока кода было написано - "...some code there". Jvm то плевать, а люди сразу поймут - мастер писал и спасибо скажут! Особенно поездато такой код читать с блокнота смартфона(ситуации разные бывают). Где справочка то уже не сработает.

Согласен, все это дело действительно сложно читать, а поддерживать… Уф!

Если необходимо уменьшить количество бойлерплейт-кода + улучшить читаемость (относительно аннотаций), то почему бы и нет?

Из опыта - не более 2*мета уровня вполне жизнеспособны и не превращаются в кашу. А если нужно укорачивать такие штуки как Swagger из статьи - то достаточно просто писать очевидные названия аннотаций.

По моему если дать объединенной аннотации хорошее имя, то это будет более читабельно чем разбирать столбик из десятка аннотаций, но тут надо рассматривать конкретные примеры кода. Например пример из статьи с AuthRequired выглядит достаточно убедительно.
PS Спринг по моему в принципе про написание аннотаций вместо кода.

Немного похоже по духу на сложные комментарии JS Doc в Javascript, когда мероприятие "хочу подсветку типов полей и аргументов" зашло слишком далеко, и в ход пошла тяжёлая артиллерия типа наследования одних типов объектов от других и запрятывания переиспользуемых типов в отдельные файлы, к которым имеют доступ разные части проекта для более ясного представления о типах пакетов, которые они друг другу шлют.

Правда, в отличие от аннотаций Spring - это не оказывает ни малейшего прямого влияния на ход исполнения кода. По сути это просто ещё одна система тестов, которая сильно ускоряет добавление новых аргументов или полей объектов, если вдруг понадобилось это сделать: проблемы в коде будут подсвечены IDE.

О! Вы очень точно подобрали словосочетание «когда мероприятие зашло слишком далеко»))

И да, такая штука может оказывать влияние на ход исполнения кода. Тут просто стоит оставаться осторожным. И конечно не стоит прятать важную логику таким образом, но если это нечто описательное, не имеющее прямого влияния на логику, то почему бы нет?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории