Какой у вас опыт проведения код-ревью и на что вы обращаете внимание?

«Какой у вас опыт проведения код-ревью и на что вы обращаете внимание?» — вопрос из категории Софт-скиллы, который задают на 31% собеседований IOS Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Регулярно провожу и принимаю участие в код-ревью. Фокус — на качестве, поддерживаемости и предотвращении регрессий.

Ключевые аспекты проверки:

  • Читаемость и ясность:
    • Осмысленные имена переменных, функций, соблюдение code style.
    • Отсутствие избыточной сложности (цикломатическая сложность).
    • Наличие комментариев только для объяснения "почему", а не "что".
  • Архитектура и дизайн:
    • Соблюдение выбранной архитектуры (MVVM, Clean Swift и т.д.).
    • Принципы SOLID, DRY, низкая связанность модулей.
  • Корректность и безопасность:
    • Полная обработка ошибок и опциональных состояний.
    • Отсутствие утечек памяти (сильные ссылочные циклы в Swift).
    • Потокобезопасность при работе с общими ресурсами.
  • Производительность:
    • Эффективные алгоритмы и структуры данных.
    • Избегание избыточных операций (например, в циклах).

Пример конструктивного комментария в ревью:

// Было: Сетевая загрузка без обработки ошибок и сильного захвата self.
func fetchData() {
    API.getData { [weak self] data in
        self?.data = data
        self?.tableView.reloadData()
    }
}

// Комментарий ревьюера:
// 1. Добавь обработку возможных ошибок (Result<Data, Error>).
// 2. Вынеси обновление UI в отдельный метод (e.g., `updateUI(with:)`) для лучшей читаемости.
// 3. Для гарантированного выполнения UI-обновлений на главном потоке используй `DispatchQueue.main.async` или аннотацию `@MainActor`.