Что такое ревью кода

preview

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

Независимо от уровня подготовки или количества практики все программисты совершают ошибки при разработке кода. Часто сфокусировавшись на одной проблеме, программист упускает из виду важные аспекты, которые приводят к проблемам. Наше внимание устроено таким образом, что в фокусе мы можем держать лишь небольшое количество аспектов, причем количество этих аспектов не так велико. По разным данным в фокусе человек может удержать от трех до семи объектов.

Кроме логики работы и правильности работы кода существуют так же требования к оформлению и организации кода, соглашения, принятые на уровне команды. Бывает трудно уследить за всем сразу.

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

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

Так как ошибки программистов неизбежны, то нужно найти способ как уменьшить их количество, не заставляя разработчиков бояться выпускать код. Одним из таких решений стала техника «ревью кода».

Ревью кода – это систематическая проверка качества кода, опубликованного в проекте. Обычно в ревью кода задействованы все члены команды, а общий алгоритм выглядит следующим образом:

  • Разработка кода;
  • Публикация разработанного кода на ревью;
  • Просмотр и анализ кода одним или нескольким разработчиком;
  • Выставление замечаний к коду;
  • Устранение замечаний или мотивированный отказ от изменения;
  • Получение согласие на публикацию кода, от разработчиков выполняющих ревью;
  • Публикация

Ревью является очень эффективным подходом и помогает решить сразу несколько проблем:

  • Программисты не испытывают страха перед публикацией кода, и тратят меньше времени на поиск потенциальных проблем;
  • Разработчики, выполняющие ревью, видят код под другим углом зрения и обращают внимание на моменты, которые упустил автор кода;
  • Многократное ревью кода улучшает качество кодовой базы и уменьшает количество ошибок в коде.

Несмотря на то, что я считаю ревью кода очень эффективной и полезной техникой среди программистов существует и сильная критика в отношении этого подхода. Противники ревью отмечают, следующие негативные моменты:

  • Программисты перекладывают ответственность за качество кода на ревьюеров, уделяя недостаточное внимание собственным проверкам;
  • Ревьюеры не выполняет анализ кода качественно, так, например, очень сложно проверить корректность алгоритма и отсутствие багов, не выполняя локального запуска кода;
  • Ревью кода сводится только к проверке синтаксиса и организации структуры программы, что недостаточно для качественного результата.

Нужно отметить, что сомнения в эффективности ревью кода, чаще исходит от разработчиков, не практикующих разработку через тестирование. В проектах, где внедрена методика TDD проверка корректности алгоритма в значительной степени автоматизирована. При этом стоит помнить, что никакое количество тестов не может подтвердить полное отсутствие ошибок в коде, но может помочь значительно их снизить.

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