Есть ли у вас опыт проведения Code Review?

«Есть ли у вас опыт проведения Code Review?» — вопрос из категории Софт-скиллы, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Да, я регулярно участвую в процессе Code Review как в роли автора, так и в роли рецензента. В моих проектах на C++ это обязательный этап перед мержем в основную ветку.

При ревью кода на C++ я фокусируюсь на нескольких ключевых аспектах:

  • Безопасность памяти и ресурсов: Проверяю, что нет утечек памяти (используются std::unique_ptr/std::shared_ptr вместо сырых указателей где возможно), корректно обрабатываются исключения (RAII), нет выхода за границы контейнеров (используются .at() или проверки).
  • Стиль и читаемость: Соблюдение принятого в команде стиля (например, основанного на Google C++ Style Guide или Core Guidelines). Имена переменных, методов должны быть понятными.
  • Производительность: Отсутствие ненужных копирований объектов (проверка на возможность использования move-семантики, передача по const-ссылке), оптимальный выбор структур данных (например, std::vector vs std::list).
  • Современность кода (Modern C++): Поощряю использование возможностей C++11/14/17/20, где это уместно (auto, range-based for, structured bindings, std::optional).

Пример замечания:

// Было: риск утечки памяти при выбросе исключения
void processOldStyle(Resource* res) {
    res->acquire();
    // ... код, который может выбросить исключение
    res->release();
}

// Стало: использование RAII
void processModern() {
    auto res = std::make_unique<Resource>(); // Умный указатель
    res->acquire();
    // ... код
    // release() вызовется в деструкторе Resource автоматически
}

Я всегда стараюсь давать конструктивную обратную связь, объясняя не только что не так, но и почему и как это можно улучшить, ссылаясь на стандарт или best practices.