Как влюбить в себя своего код-ревьюера: правила подготовки к code review
Рассказываем про техники подготовки к code review, которые помогут получить от него максимальную пользу и порадуют ревьюера.
5К открытий5К показов
Под подготовкой к code review обычно понимают подготовку самого код-ревьюера. Но вклад разработчика тоже важен. Однако если вы постараетесь следовать всем советам из этой статьи, ваш ревьюер может и не влюбится в вас, но будет доволен.
Как улучшить code review?
- Учитесь быстрее — правильно составляйте список изменений в коде, это поможет ревьюеру сконцетрироваться на главном и дать полезный фидбек.
- Делайте других лучше — подавайте пример коллегам.
- Избавьтесь от конфликтов в команде — code review это всегда споры. Относитесь к ним обдуманно и последовательно.
Золотое правило: цените чужое время.
Старайтесь сами находить ошибки, это полезно для вас обоих. Относитесь к ревьюеру не как к препятствию, а как к достойному доверия союзнику.
Техники подготовки к код ревью
Сделайте первое ревью самостоятельно
Дайте коду полежать до утра, а потом попробуйте представить, что видите его в первый раз. Что в нём вас смущает? Посмотрите на изменения в том же виде, в котором их увидит ревьюер. Избегайте повторяющихся ошибок (лишний файл, остатки отладочного кода).
Напишите понятный список изменений
Хороший changelist объясняет, что изменилось на верхнем уровне и почему сделано это изменение. Помните, что читатель может не обладать теми же знаниями о проекте, что и вы.
Подробнее про списки изменений в статьях «How to Write a Git Commit Message» и «My favourite Git commit».
Автоматизируйте рутину
Не тратьте время ревьюера на проверку отступов у скобок. Отправляйте код на ревью только после того, как все автотесты отработали без ошибок. Используйте Git Hooks для проверки кода перед отправкой.
Пусть ваш код говорит сам за себя
Вы можете объяснить одному человеку как работает ваш код, но лучше, чтобы код был понятен каждому. Поэтому при подготовке к код ревью попробуйте посмотреть на свой код глазами не знакомого с ним человека.
Помните, что в сложных случаях можно использовать комментарии.
Делайте узконаправленные изменения
Лучшая тактика — одно изменение для одной проблемы. В противном случае ревьюеру будет сложно понять, какие изменения служат цели А, а какие цели Б.
Разделяйте функциональные изменения и рефакторинг
Пара строк функциональных изменений затеряется при рефакторинге. Чтобы этого избежать, действуйте в следующем порядке:
- Добавьте поведенческие тесты.
- Проводите рефакторинг, не изменяя код тестов.
- Измените логику и обновите тесты.
Разделяйте длинные changelist’ы
Если при подготовке к code review вы видите, что список изменений слишком разросся, подумайте о том, что нужно добавить сейчас, а с чем можно повременить.
Адекватно воспринимайте критику
При подготовке к code review морально настройтесь, что скорее всего вы получите в том числе негативный отклик. Лучший способ угробить code review — принять критику слишком близко к сердцу. Это особенно легко сделать, когда ревьюер формулирует фидбек как личные претензии.
Тем не менее, как автор вы полностью контролируете свою реакцию на ревью. Конечно, иногда первое желание — попытаться оправдаться. Но лучше просто поблагодарить ревьюера за внимательность.
Будьте терпеливы к ошибкам
Иногда ревьюеры откровенно ошибаются, но это может быть индикатором того, что нужны изменения. Например, это могут быть какие-то неявные языковые особенности, которые не понятны неспециалисту.
Отвечайте на code review
Установите в вашей команде правила, которые помогут определить, кто сейчас работает над кодом (вы или ревьюер). Это поможет не мешать друг другу в процессе. Отвечайте на каждое замечание настолько развернуто, насколько это требуется.
Задавайте вопросы правильно
Если попадается непонятное замечание, спросите: «Что будет полезно изменить?». Также можно попробовать угадать намерения ревьюера и предварительно отредактировать код — это может помочь, даже если вы не совсем попали в цель.
В неоднозначных ситуациях отдайте преимущество ревьюеру
Некоторые вещи в коде — дело вкуса и их сложно рационально аргументировать. Однако если ревьюер что-то предлагает, подумайте, возможно, его свежий взгляд объективнее.
Оперативно отвечайте на комментарии
Чем дольше вы отвечаете на замечания, тем больше времени потребуется для того, чтобы вспомнить контекст (и вам, и ревьюеру). После отправки кода на code review, сделайте главным приоритетом ответ на него.
Расскажите, а как проходит ваша подготовка к код ревью? Готовитесь ли вы как-то вообще и считаете ли это необходимым?
5К открытий5К показов