Функция переключение (также функция переключатель , флаг функции , функция плавник , условная функция и т.д.) представляет собой метод , в разработке программного обеспечения , что попытки обеспечить альтернативу для поддержания нескольких ветвей в исходном коде (известный как художественные ветви), таким образом, что программное обеспечение Функцию можно протестировать еще до того, как она будет завершена и готова к выпуску . Переключатель функций используется для скрытия, включения или отключения функции во время выполнения.. Например, в процессе разработки разработчик может включить функцию для тестирования и отключить ее для других пользователей. [1]
Непрерывный выпуск и непрерывное развертывание позволяют разработчикам быстро получать отзывы о своем коде. Это требует внесения изменений в их код как можно раньше. Ветви функций позволяют обходить этот процесс. [2] Переключение функций - важный метод для непрерывной доставки .
Этот метод позволяет разработчикам выпускать версию продукта с незавершенными функциями. Эти незавершенные функции скрыты (переключаются), поэтому они не отображаются в пользовательском интерфейсе . Это позволяет доставлять множество небольших инкрементных версий программного обеспечения без затрат на постоянное ветвление и слияние . Переключение функций может сократить циклы интеграции программного обеспечения. [3] Команда, работающая над проектом, может использовать переключатели функций, чтобы ускорить процесс разработки, которые также могут включать неполный код.
Реализация [ править ]
Этот раздел требует дополнительных ссылок для проверки . ( Октябрь 2016 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Переключатели функций - это, по сути, переменные , которые используются внутри условных операторов . Следовательно, блоки внутри этих условных операторов могут быть включены или выключены в зависимости от значения переключателя функции. Блок кода, который был отключен, похож на закомментированный . Это позволяет разработчикам контролировать поток своего программного обеспечения и обходить функции, которые не готовы к развертыванию.
Основное использование переключателей функций - избежать конфликта, который может возникнуть при слиянии изменений в программном обеспечении в последний момент перед выпуском, хотя это может привести к переключению долга . Задолженность переключения возникает из-за наличия мертвого кода в программном обеспечении после того, как функция была постоянно включена, и вызывает накладные расходы. Эта часть кода должна быть удалена осторожно, чтобы не мешать другим частям кода.
Существует два основных типа переключения функций. Один из них - переключатель выпуска, который разработчик решает сохранить или удалить перед выпуском продукта в зависимости от его работы. Другой - это бизнес-переключатель, который сохраняется, потому что его использование отличается от использования старого кода.
Переключатели функций можно использовать в следующих сценариях: [1]
- Добавление новой функции в приложение.
- Улучшение существующей функции в приложении.
- Скрытие или отключение функции.
- Расширение интерфейса.
Переключатели функций могут быть сохранены как: [4]
- Записи строк в базе данных.
- Свойство в файле конфигурации.
- Запись во внешней службе флага функции.
Группы функций [ править ]
Группы функций состоят из переключателей функций, которые работают вместе. Это позволяет разработчику легко управлять набором связанных переключателей. [5]
Канарейка [ править ]
Еще одно преимущество флагов функций - канареечные запуски. Канареечный выпуск (или канареечный запуск, или канареечное развертывание) позволяет разработчикам постепенно тестировать функции небольшой группой пользователей. Если производительность функции неудовлетворительна, ее можно откатить без каких-либо побочных эффектов. [6]
Мартин Фаулер утверждает, что переключение функций «должно быть вашим последним выбором, когда вы имеете дело с вводом функций в производство». Вместо этого лучше разбить функцию на более мелкие части, каждая из которых может быть реализована и безопасно внедрена в выпущенный продукт, не вызывая других проблем. [7]
Переключение функций используется многими крупными веб-сайтами, включая Flickr, [8] Disqus, [9] Etsy, [10] reddit, [11] Gmail [12] и Netflix, [13], а также программное обеспечение, такое как Google Chrome Canary .
См. Также [ править ]
- Управление конфигурацией программного обеспечения
- Линия программных продуктов
- Сравнение программного обеспечения для управления конфигурацией с открытым исходным кодом
Ссылки [ править ]
- ^ a b «Рейнджеры ALM - Разработка программного обеспечения с переключателями функций» . msdn.microsoft.com .
- ^ «Флаги функций для мобильных приложений - Apptimize» . apptimize.com . Архивировано из оригинального 18 -го сентября 2016 года . Проверено 9 января 2017 года .
- ^ Программирование приложений JavaScript . Архивировано из оригинала на 2016-09-15 . Проверено 14 сентября 2016 .
- ^ Echagüe, Пато (2014). Управление флагами функций . O'Reilly Media. ISBN 9781492028598- через https://www.oreilly.com/library/view/managing-feature-flags/9781492028598 .
- ^ Эллиот, Эрик (2018). Программирование приложений JavaScript . O'Reilly Media.
- ^ «Канарские запуски - как и почему канареечному выпуску» . launchdarkly.com . 7 апреля 2015 . Проверено 9 января 2017 года .
- ↑ Мартин Фаулер, 29 октября 2010 г. (2010-10-29). «FeatureToggle» . Martinfowler.com . Проверено 27 сентября 2013 .
- ^ Хармс, Росс. «Перелистывание - code.flickr.com» . flickr.net . Проверено 9 января 2017 года .
- ^ dcramer (9 июля 2010 г.). «Частичное развертывание с переключением функций» . Архивировано из оригинала на 2013-11-05 . Проверено 10 октября 2013 .
- ^ "Как Etsy управляет разработкой и операциями?" . codeascraft.com . 4 февраля 2011 . Проверено 9 января 2017 года .
- ^ "Reddit / Reddit" . github.com . Проверено 9 января 2017 года .
- ^ «Разработка нового внешнего вида Gmail» . googleblog.com . Проверено 9 января 2017 года .
- ^ «Подготовка Netflix API к развертыванию» . netflix.com . Проверено 9 января 2017 года .