[Перевод] Как ускорить код-ревью

?v=1

Неграмотно поставленные код-ревью серьёзно замедляют рабочий процесс. Когда большое количество изменений застревает на несколько дней (или недель!), то выход продукта на рынок придётся отложить. Вот несколько причин, почему такое происходит:

  • Отсутствует стандарт оформления кода
  • Не используются автоматизированные проверки
  • Программисты не выполняют самостоятельный анализ своего кода
  • Огромные пул-реквесты
  • Расплывчатые пул-реквесты
  • Отсутствуют дедлайны для код-ревью


Каждая команда должна принять стандарт оформления кода (стандарт программирования, руководство по стилю), с которыми все согласны. В него входят соглашения об именовании, структуре папок, форматировании кода и список лучших практик, таких как модульное тестирование, валидация и т. д.

Отсутствие чёткого стандарта и соглашений заставляет каждого разработчика писать код так, как ему нравится, что приводит к спорам на код-ревью. Если вы видите много комментариев по поводу форматирования, соглашений об именовании и прочее, то пришло время поговорить об общем стандарте.

Ваша команда может либо разработать собственный набор рекомендаций, либо начать с известных рекомендаций от других компаний. Вот пример от Google.


После принятия стандартов оформления кода изучите инструменты для проверки соответствия этим стандартам. Почти для всех языков есть инструменты для форматирования кода, линтеры и другие утилиты, которые вы можете поставить в хуки перед коммитом и прописать в системах CI/CD.

Эти инструменты проверяют код на соответствие стандартам оформления и уведомляют автора о нарушениях. Автор получает возможность исправить проблемы перед отправкой пул-реквеста, что значительно снижает шум. Чем больше проверок проходит автоматически, тем больше времени остаётся у рецензента, чтобы сосредоточиться на более серьёзных проблемах, таких как огрехи архитектуры, пробелы в реализации и т. д.


Прежде чем обращаться к коллегам за код-ревью, автор должен сам просмотреть собственные изменения. Это как проверка текста письма на опечатки и ошибки перед отправкой адресату.

На практике проверка собственного кода является сложной задачей, поскольку вы склонны подсознательно пропускать недостатки. Вот несколько способов улучшить качество самостоятельного анализа:

  • Оформить пул-реквест без назначения рецензентов и вернуться к нему через пару часов, чтобы свежим взглядом взгянуть на свои правки.
  • Подавлять свою естественную склонность пролистывать изменения, а вместо этого намеренно просматривать их строчку за строчкой.
  • Следовать контрольному списку вопросов: соответствует ли код стандарту оформления? удовлетворяются ли все бизнес-требования? есть ли тесты для всех возможных вариантов использования? и т. д.


Количество комментариев к пул-реквесту обратно пропорционально количеству содержащихся в нем изменений. То есть большой PR → мало комментариев, маленький PR → много комментариев.

Дело в том, что рецензенты не внимательно изучают большой пул-реквест, а вместо этого склонны пролистать его, чтобы быстрее завершить работу. Это противоречит цели код-ревью. Иногда происходит обратное, когда автор много дней не получает никаких комментариев, потому что рецензент боится начать обзор слишком большого PR.

Разбейте пул-реквест на более мелкие куски, которые имеют смысл отдельно друг от друга. Так вы поможете рассмотреть их должным образом и быстро.


Часто вам предлагают пул-реквест с расплывчатым описанием или вообще без оного. Рецензент должен понять смысл изменений, пытаясь вспомнить задачу, которую обсуждали где-то на собрании или в баг-трекере. Поэтому PR лучше снабжать сопроводительной информацией:

  • Какие изменения в нём содержатся
  • С каких файлов начать
  • Ссылка на задачу в баг-трекере
  • Скриншоты, если это какое-то визуальное изменение


Эта информация обеспечит лучший контекст для рецензента и тем самым ускорит код-ревью.
Один из способов растянуть код-ревью навечно — не поставить никаких дедлайнов для рецензента. Определите разумные сроки, например:

  • Код-ревью должен быть закончен за 48 часов с момента отправки пул-реквеста.
  • Для хотфиксов срок 30 минут.


Спасибо за чтение! :)

© Habrahabr.ru