Я рассматриваю возможность запуска проекта, который используется для генерации кода в Java с помощью аннотаций (я не буду вдаваться в подробности, поскольку это не очень актуально). Меня интересует обоснованность и полезность проекта, и что-то, что поразило меня, - это зависимость от инструмента обработки аннотации (apt).
Что я хотел бы знать, поскольку я не могу говорить по опыту, каковы недостатки использования обработки аннотаций в Java?
Это может быть что угодно, в том числе:
- Трудно делать TDD при записи процессора
- Трудно включить обработку в систему сборки
- обработка занимает много времени, и очень сложно заставить ее работать быстро
- Использование аннотаций в среде IDE требует плагина для каждого, чтобы заставить его вести себя одинаково при сообщениях об ошибках.
Это просто примеры, а не мое мнение. Я в процессе исследования, если кто-либо из них правдивый (в том числе задающий этот вопрос;-))
Я уверен, что должны быть недостатки (например, Qi4J специально перечислять не использование препроцессоров в качестве преимущества), но я не имеют опыта с ним, чтобы рассказать, что они собой представляют.
Разумной альтернативой использованию обработки аннотаций, вероятно, является создание плагинов для соответствующих IDE для генерации кода (это было бы нечто похожее на функцию переопределения/реализации методов, которая генерировала бы все подписи без тел метода). Однако этот шаг нужно повторять каждый раз, когда соответствующие части кода меняются, обработка аннотаций, насколько я могу судить, не будет.
В отношении примера, приведенного с помощью инвазивного количества аннотаций, я не предполагаю, что использование должно быть чем-то вроде этого, может быть, горсткой для любого данного класса. Это не помешало бы ему, конечно, злоупотреблять.