Депрекация

Содержание

Депрекация (deprecation) — процесс, в котором различный функционал программного обеспечения помечается как устаревшим и со временем выводится из использования.

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

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

Депрекация в Drupal

Drupal известен тем, что ранее, новая верия системы была несовместима с предыдущей. Код актуальной версии не проходил через полный цикл депрекации, его просто удаляли в новой версии. И отследить такое непосредственно на проекте, не читая изменения, было проблематично.

Начиная с Drupal 8 в ядре адаптировали семантическое версионирование, что открыло возможность проводить полноценную депрекацию устаревших возможностей. Благодаря этому Drupal 9.0 является точной копией Drupal 8.9 за исключением устаревших возможностей, которые были удалены из кодовой базы.

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

@deprecated in %deprecation-version% and is removed from %removal-version%. %extra-info%.
@see %cr-link%

Если какой-то API или возможность в Drupal помечена как устаревшая, настоятельно рекомендуется перестать использовать данные возможности при написании кода, а также, по возможности, обновить старый с использованием новых инструментов.

Благодаря данным меткам, IDE и разработчики могут быстро идентифицировать что они используют устаревшие возможности и узнать о том, когда она будет удалена и что использовать вместо неё.

На данный момент, устаревшие возможности в Drupal удаляется в соответствии с семантическим версионированием — в мажорной версии, а депрекация кода допустима лишь в минорных версиях.

🌱 Помогите нам сделать документацию лучше!

Вся документация Druki с отрытым исходным кодом. Нашли ошибку или неточность? Создайте pull request.

Редактировать текущий документ Обсудить улучшение

Или узнайте как контрибутить.

🤔 По-прежнему нужна помощь?

Не нашли ответа на свой вопрос? Попросите помощи у сообщества!

Задайте вопрос на GitHub Смотрите другие ресурсы сообщества