@wittyrider
systemd есть людей

Есть ли объективные причины отказаться от аннотации?

Это скорее вопрос религии но все же чем аннотации плохи?
Сейчас же пишу все(валидацию/меппинг/сериализер) на аннотациях, на каких граблях могу попасть в будущем?
  • Вопрос задан
  • 388 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Почему аннотации это плохо? Потому что аннотаций в PHP нет (во всяком случае пока). А то что есть - это кастыль основанный на phpdoc.

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

Есть еще одно НО. Скажем я когда-то был категорически против использования аннотаций в сущностях доктрины. Представьте себе типичный проект на symfony. У нас есть какое-то поле и мы должны написать туда минимум аннотацию для доктрины и аннотацию для валидатора. Если мы пишем апишку то появляются всякие сериализаторы и прочая чушь, документация к API и тд. Ну и собственно сам phpdoc. В итоге на одно поле сущности выходят минимум 5 строк в phpdoc с аннотациями.

Но выход из этой ситуации очевиден: перестать использовать сущности доктрины вне сервисного слоя (в контроллерах, формах и прочей чуши), валидировать только DTO, добиться того что бы модель в принципе не могла войти в невалидное состояние. И тогда остаются только аннотации для доктрины, с чем я смириться могу поскольку я ленивая ж. Валидировать же реквест или форму довольно просто.

Короче в чем мысль, аннотации и атрибуты это клевая возможность декларативно определять как система должна себя вести. Но многие разработчики уж как-то сильно перебарщивают с этим. В остальном это лишь дело вкуса.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
В случае, если аннотации используются для роутинга, роуты невозможно отсортировать в нужном порядке. Приходится в итоге все равно прибегать к yaml: пример
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы