Рефакторинг компонентов через data-driven подход
В мобильной разработке важно найти баланс между гибкостью кода и его поддержкой. Команда Яндекс 360 поделилась опытом упрощения компонента List-item, который ранее имел более 272 млн возможных комбинаций.
Анализ реального использования
Для начала был проведён анализ всех существующих вариантов использования компонента. Это позволило выявить наиболее распространённые паттерны и сократить число ненужных опций. Для анализа использовался инструмент, основанный на анализе абстрактного синтаксического дерева (AST), что дало возможность точно определить реальные потребности разработчиков.
Метрика сложности API
Чтобы оценить сложность API компонента, была разработана специальная метрика. Она учитывала такие параметры, как количество параметров, их типы и возможные комбинации. Эта метрика помогла команде понять, какие части компонента требуют наибольшего внимания при рефакторинге.
Аргументация изменений
Перед началом переработки было необходимо обосновать необходимость изменений перед руководством и командой. Были подготовлены презентации и доклады, которые наглядно демонстрировали преимущества нового подхода. Ключевым аргументом стало повышение производительности разработки за счёт уменьшения количества ошибок и улучшения читаемости кода.
Альтернативный подход к проектированию
Команда предложила пересмотреть традиционный подход проектирования компонента List-item. Вместо создания универсального компонента, подходящего для любой задачи, они предложили использовать набор специализированных шаблонов, каждый из которых предназначен для конкретного сценария использования. Этот подход позволяет снизить количество вариаций и улучшить консистентность интерфейсов.
Результаты
После проведения рефакторинга команда отметила значительное улучшение качества кода и уменьшение времени на поддержку. Разработчики стали тратить меньше времени на изучение документации и быстрее внедряют новые фичи.