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

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

Теперь вам нужно исправить и отправить его немедленно. В большинстве случаев починить легко, но доставить – нет!

Причина в том, что при выпуске исправления также будет добавлена ​​функция, над которой вы работаете, а она еще не завершена!

Вы подумаете, что это легко, я просто возьму последний отправленный коммит и создам исправление поверх него. Как бы просто это ни звучало, такой подход создаст кучу таких проблем, как —

  • Этот коммит может не собраться с новой версией Xcode/Android Studio/Gradle — никогда не знаешь!
  • После того, как исправление сделано, вам нужно создать такое же исправление в текущей ветке или просто объединить эту ветку hotfix в вашу текущую ветку.

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

Итак, каков ответ на все эти вопросы?

Позвольте представить вам флажки функций!

Что такое флаг функции?

Флаг функции – это метод кодирования, при котором во время работы над новой функцией все, связанное с этой функцией, разрабатывается таким образом, чтобы эту функцию можно было включить. /disabled из логического флага.

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

Флаг функции еще более удобен, когда несколько членов команды вносят свой вклад в репозиторий. В этом случае иногда команда будет работать над несколькими функциями, и Feature Flag будет окончательным решением.

Хорошо, хватит с введения, давайте перейдем к тому, как вы можете начать их использовать сейчас!

Покажите мне пример, пожалуйста!

Feature Flag — это просто логическое значение! Это означает, что вам не нужен какой-либо SDK или Framework, чтобы начать его использовать.

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

Давайте рассмотрим пример!

Рассмотрите сценарий, в котором вы работаете над приложением TODO. Экран списка находится в разработке, и сейчас вы работаете над функцией добавления элемента TODO.

Я буду использовать swift и SwiftUI в этом примере, но вы можете использовать подобную технику на любом языке.

  1. Добавить класс флага функции

Мы начнем с добавления класса, который будет отслеживать все флаги функций. Этот класс будет один для каждого приложения, вы можете продолжать добавлять/удалять функции оттуда по мере необходимости.

class FeatureFlags {
    static let isAddTodoEnabled = true
}

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

2. Используйте флаг функции

Теперь в представлении списка, где мы хотим контролировать видимость кнопки Add на основе флага функции, мы можем позаботиться об этом.

struct TaskListView: View {
    
    @StateObject var viewModel = TaskListVM()
    
    var body: some View {
        List(viewModel.tasks) { (task: Task) in
            TaskItemView(task: task)
        }
        .background(Color.yellow)
        .navigationTitle("Tasks")
        .onAppear {
            self.viewModel.refreshTasks()
        }
        .navigationBarItems(trailing: FeatureFlags.isAddTodoEnabled
                ? Button("Add", action: { self.viewModel.onAdd() })
                : nil
        )
    }
}

Здесь мы добавили кнопку Add на панель навигации на основе условия FeatureFlags.isAddTodoEnabled.

Теперь мы можем легко включать/отключать функцию добавления в нашем приложении с помощью одного флага.

Заключение

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

Пример, который я добавил выше, использует флаг локальной функции. Однако вы можете сделать еще один шаг вперед и использовать что-то вроде инструмента Firebase A/B testing для управления флагом функции из консоли Firebase. Доступно так много других популярных инструментов, как Launch Darkly.

Вот и все на сегодня, надеюсь, вы узнали что-то новое!

Связанные популярные статьи





Спасибо за вашу поддержку!

Если вам нравится то, что вы читаете, обязательно 👏 👏👏 это ниже — как писатель это означает мир!

Подпишитесь на Canopasилисвяжитесь с нами в Twitter, чтобы получать новости об интересных статьях!