Вопрос

Мой проект медленно реализует аннотации Java.Половина разработчиков, включая меня, считают, что выполнение каких-либо сложных действий с аннотациями увеличивает общую нагрузку на обслуживание.Другая половина команды думает, что они — колени пчелы.

Каков ваш реальный опыт работы с командами разработчиков, способными поддерживать аннотированный код?

Это было полезно?

Решение

Я чувствую, что это распадается на два варианта использования аннотаций: аннотации для предоставления «описания» класса и аннотации.аннотации для обеспечения «зависимости» класса.

Меня устраивает использование аннотаций класса в «описании» — это то, что принадлежит классу, и аннотация помогает создать сокращенную версию этого — под это подпадают аннотации JPA.

Однако мне не очень нравятся аннотации «зависимости» — если вы помещаете зависимость непосредственно в класс — даже если она определяется во время выполнения из аннотации, а не во время компиляции в классе — разве это не нарушает зависимость инъекция?(возможно, скорее по духу, чем по правилу...)

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

Другие советы

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

Хорошая вещь в аннотациях заключается в том, что они делают конфигурацию ваших классов самодокументируемой.Теперь вместо того, чтобы искать в огромном XML-файле, чтобы попытаться выяснить, как фреймворк использует ваш класс, ваш сорт говорит тебе.

Обычно проблема с подобными изменениями заключается в том, что привыкание к ним просто требует времени.Большинство людей, включая разработчиков, сопротивляются переменам.Я помню, как начал работать со Spring.Первые несколько недель я задавался вопросом, почему кто-то мирится с головными болями, связанными с этим.Затем, несколько недель спустя, я задался вопросом, как я раньше жил без него.

я абсолютно любовь аннотации.Я использую их из Hibernate/JPA, Seam, JAXB....всего, что могу.ИМО, нет ничего хуже, чем открывать XML-файл, чтобы узнать, как обрабатывается класс.

На мой взгляд, аннотации позволяют классу говорить сам за себя.Кроме того, аннотации (надеюсь) являются частью помощи по содержимому вашей IDE, тогда как с настройкой XML вы обычно работаете самостоятельно.

Однако все может сводиться к тому, как конфигурации XML и аннотации фактически используются какой-либо конкретной библиотекой (поскольку большинство из них предлагают и то, и другое), и какой тип аннотаций используется.Я могу себе представить, что аннотации, которые определяют что-то, специфичное для сборки (например.пути к файлу/URL-адресу) на самом деле может быть проще, чем конфигурация XML.

Это сильно зависит от поддержки IDE.Я считаю, что аннотации следует синхронизировать с кодом посредством проверок в IDE, но поддержка этого несколько отсутствует.

Например.старая версия IDEA предупредила бы, если вы переопределили функцию без @Override, но не удалила бы тег @Override, если бы вы изменили сигнатуру метода (или сигнатуру суперкласса, если на то пошло) и разорвали связь.

Без поддержки я считаю их громоздким способом добавления метаданных в код.

Лично я считаю, что упомянутый вами конкретный вариант использования (автоматическое создание веб-форм) является отличным вариантом использования аннотаций.Я думаю, что любой сценарий «фреймворка», в котором вы можете написать упрощенный код и позволить фреймворку выполнять тяжелую (часто повторяющуюся) работу на основе нескольких предложений (также известных как аннотации), является идеальным вариантом использования аннотаций.

мне интересно, почему ты не как аннотации в этой ситуации, и что вы считаете «бременем обслуживания»?(и я не пытаюсь оскорбить вашу позицию, просто поймите ее).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top