> Что такое архитектуры с state machine, например Redux или ReSwift (iOS, Swift)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: Aston

Стек: iOS, Swift

> Пример ответа

Архитектуры на основе state machine, такие как Redux и ReSwift, реализуют однонаправленный поток данных (unidirectional data flow) и централизованное управление состоянием приложения. В iOS-разработке ReSwift - это адаптация Redux под Swift.

Ключевые компоненты:

  • State - единственный источник истины (single source of truth), представленный неизменяемой структурой (например, struct). Всё состояние приложения хранится в одном объекте.

  • Action - описание намерения изменить состояние (например, enum с ассоциированными значениями). Действия не содержат логики, только данные.

  • Reducer - чистая функция, которая принимает текущее состояние и действие, а возвращает новое состояние. Не имеет побочных эффектов.

  • Store - объект, который хранит состояние, диспатчит действия и уведомляет подписчиков об изменениях.

Пример на Swift с ReSwift:

SWIFT
// State
struct AppState: StateType {
var counter: Int = 0
}
// Action
enum CounterAction: Action {
case increment
case decrement
}
// Reducer
func appReducer(action: Action, state: AppState?) -> AppState {
var state = state ?? AppState()
switch action {
case CounterAction.increment:
state.counter += 1
case CounterAction.decrement:
state.counter -= 1
default:
break
}
return state
}
// Store
let store = Store<AppState>(reducer: appReducer, state: nil)
store.dispatch(CounterAction.increment)

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

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью