Новый код попадает в основную ветку продукта через запрос на слияние, pull request, и кто-то должен его одобрить. Прочитать изменение и одобрить его или вернуть с замечаниями — работа коллеги автора, и называется она code review, или код-ревью. Главная цель ревью, как её формулирует Google, — чтобы код продукта со временем становился лучше.
Что проверяет рецензент
По руководству Google, рецензент смотрит, понятно ли устроено изменение, делает ли оно то, что нужно пользователям, не сложнее ли оно, чем требует задача, есть ли к нему тесты и понятны ли имена. Комментарии в коде должны объяснять, зачем он написан так. Читать нужно каждую строку и в контексте всей программы.
Допустим, разработчик принёс изменение на 60 строк, оплату заказа в два платежа. Рецензент спрашивает, что станет с заказом, если второй платёж так и не придёт, и замечает, что нет теста на возврат денег после первого. Оба вопроса стоили ему нескольких минут, а ошибка в оплате после выпуска обошлась бы деньгами и разбирательством с клиентами.
Размер изменения здесь важен. Google считает нормой около 100 строк, а 1 000 строк — уже слишком большим изменением. Маленькие изменения проверяют быстрее и внимательнее, и ошибок в них меньше. Если изменения приходят раз в месяц по несколько тысяч строк, одобрение на них может стоять, но прочитать их так же внимательно, как 100 строк, рецензент не успеет.
Чего код-ревью не заменит
Ревью — это чтение, а поведение программы надёжнее проверяют автоматические тесты. И смотрит ревью только на новое, поэтому о состоянии кода, написанного за годы до этого изменения, оно не расскажет. Для этого заказывают аудит кода.
Бывает, что рецензент просит упростить устройство кода, не меняя того, что он делает. Это уже рефакторинг, и его удобно вести теми же маленькими изменениями.
Вопросы о код-ревью
Как проверить, что у подрядчика есть код-ревью?
Попросите показать настройки основной ветки. В GitHub, например, можно запретить слияние без заданного числа одобрений. Потом откройте несколько последних pull request и посмотрите, есть ли в них замечания и ответы на них.
Сколько должно длиться ревью?
В Google считают, что ответить на запрос ревью нужно не позже следующего рабочего дня, потому что медленное ревью тормозит всю команду.
Может ли код-ревью делать ИИ?
Замечания к изменению ИИ уже оставляет, в том числе в GitHub. Но по умолчанию его отзыв там не засчитывается как обязательное одобрение, и GitHub сам советует дополнять его проверкой человека.
- Google Engineering Practices: «The Standard of Code Review», «What to look for in a code review», «Small CLs», «Speed of Code Reviews».
- GitHub Docs: «About protected branches»; «About GitHub Copilot code review».