Найти тему
Nuances of programming

Code Review - Полное руководство

Оглавление

Источник: Nuances of Programming

После проведения сотни code rewiew, лично возглавив R&D (Research & Development) команду и спровоцировав несколько непреднамеренных ошибок, я решил поделиться своими выводами о том, как правильно выстроить процесс проведения code rewiew.

Давайте сформулируем несколько простых причин, почему вы вообще должны прибегать к code rewiew:

  • Может помочь уменьшить количество ошибок в коде.
  • Поможет убедиться, что все требования по оформлению кода соблюдены.
  • Это эффективный способ обучиться чему-нибудь новому у своих коллег и ознакомиться с данной базой кода.
  • Помогает придерживаться единого стандарта по оформлению кода всей вашей команде.
  • Сплачивает команду — code rewiew стимулирует разработчиков общаться друг с другом и вместе придумывать решения проблем.
  • Улучшает общее качество кода.

Тем не менее code rewiew может стать одним из самых сложных и трудоемких этапов в процессе разработки программного обеспечения.

Мы все с этим сталкивались. Сначала вы ждете несколько дней, пока ваш код будет рассмотрен. После рассмотрения кода вы начинаете раз за разом отсылать эксперту свой код, но уже с поправками. Вы тратите недели, разрываясь между новыми функциями и старыми коммитами, которые все еще требуют полировки.

Если процесс проведения code rewiew был неправильно спланирован, затраты на его проведение будут превышать конечную ценность.

Вот почему крайне важно правильно организовать и выстроить четко определенный процесс проведения code rewiew в вашей команде.

Как правило, необходимо иметь четко определенные инструкции до создания pull-запроса и во время проверки кода, как для эксперта (рецензента), так и для того, чей код будут проверять.

Необходимые предварительные условия для создания pull-запросов. 

Я пришел к выводу, что следующие условия чрезвычайно помогают в снижении количества разногласий: 

  • Убедитесь, что код успешно компилируется.
  • Прочитайте и прокомментируйте свой код. 
  • Создайте и запустите тест, который проверит на ошибки область видимости вашего кода.
  • Весь код в кодовой базе должен быть протестирован.
  • Соедините релевантные задачи/вопросы в своей системе для отслеживания ошибок и управления проектом (например, в Jira) cо своим pull-запросом.
  • Не “приглашайте” эксперта, пока не завершите все вышеизложенные пункты.

Обязанности того, чей код проверяют

  • Общайтесь со своим рецензентом. Предоставьте своему рецензенту полную информацию о задаче. Поскольку многие из авторов pull-запросов уже когда-то были рецензентами, просто поставьте себя на место рецензента и задайте вопрос: “Как я могу облегчить себе задачу?” 
  • Делайте небольшие pull-запросы. Небольшие pull-запросы — это лучший способ ускорить время проведения code rewiew. С помощью небольших pull-запросов вы можете быстрее и точнее выполнять итерации. Как правило, небольшие изменения кода также легче тестировать и верифицировать, как стабильные. Когда pull-запрос невелик, рецензентам легче понять контекст и логику.
  • Избегайте изменений во время code review. Важные изменения в середине code rewiew сводят на нет весь процесс code review. Если вам необходимо внести серьезные изменения после отправки review, вы можете отправить существующий review и дополнить его нужными изменениями. Если вам необходимо внести серьезные изменения после начала процесса code review, сообщите об этом рецензенту как можно раньше.
  • Отвечайте на все замечания, которые будут сделаны вам во время code review.Даже если вы не собираетесь придерживаться этих замечаний, ответьте на них и объясните свою позицию. Если вы чего-то не понимаете, не стесняйтесь задавать вопросы во время или после code review. 
  • Code reviews — это совместные обсуждения, а не беспрекословное следование чьим-то указам. Большинствозамечаний во время code review можно рассматривать как рекомендации, а не приказы. Абсолютно нормально не соглашаться с замечаниями рецензентов, но необходимо объяснить почему и дать им возможность ответить на вашу позицию.

Обязанности рецензента.

  • Внимательно ознакомьтесь с описанием задачи и требованиями.
  • Убедитесь, что вы полностью понимаете код.
  • Анализируйте все компромиссы в архитектуре.
  • Разделите ваши замечания на 3 категории: Критические, Необязательные и Положительные. Первые категории — это те замечания, которые разработчик должен согласиться исправить, а последняя — это те замечания, которые позволяют разработчику понять, какие куски кода у него получились лучше всего.

Кроме того, избегайте чересчур большого количества замечаний и используйте Github review (см.пример ниже)

-2

Если у вас есть несколько замечаний, вы должны использовать опцию review в Github, вместо того, чтобы по отдельности добавлять замечания и уведомлять об этом разработчика, когда закончите.

И наконец, я обнаружил, что, если вы будете задавать следующие вопросы — это поможет вам упростить и улучшить процесс code review:

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

Читайте нас в телеграмме и vk

Перевод статьи Assaf Elovic: Code Review — The Ultimate Guide