Почему нужно регулярно проводить код-ревью
Что такое код-ревью?
Практика проверки кода (код-ревью) на наличие ошибок, изъянов, пропусков, уязвимостей одним программистом за другим получила широкое распространение.
Определение и основные цели
Ревью кода (Code Review, CR) — необходимый шаг в программировании для обзора и анализа исходного кода, который помогает выявить и исправить недочеты после начальной стадии разработки.
CR преследует две цели:
- Найти ошибки, стилистические недочеты с точки зрения проекта, уязвимости, пропуски.
- Улучшить читаемость и архитектуру кода, наладить коммуникацию сотрудников.
Почему регулярные код-ревью важны?
Регулярное проведение Code Review позволяет повысить эффективность команды и улучшить качество code за счет снижения факторов риска (Bus factor).
Проверка помогает найти баги и недочеты в ходе программирования, а также увеличить шансы обнаружения упущенных кейсов.
Код после ревью становится чище и понятнее другим разработчикам для прочтения.
В процессе обзора более опытный проверяющий делится опытом и способствует обучению разработчиков.
Улучшение качества кода
Code Review способствует улучшению качества кода благодаря тому, что любые изменения попадают в основное хранилище и в релиз-версию ПО только после обзора остальными участниками ИТ-команды.
Процесс состоит из этапов:
- Добавление новой функции в code и оповещение коллег о необходимости тестирования обновлений
- Обзор code ревьюерами и фидбек. Для реального повышения качества обязательным условием является отметка архитектурных недочетов или плохого стиля.
- Работа с замечаниями. Автору предстоит привести убедительные аргументы в защиту своей позиции или внести нужные исправления.
Обнаружение и исправление ошибок
Серия CR называется раундами. Каждый направлен на поиск багов, изъянов и ошибок, которые могут снизить качество продукта.
Раунды состоят из этапов: оценка размеров запроса на слияние веток Merge Request (MR), реализация глобальных правок (например, работа над неверно выбранным подходом к разработке) и менее важных исправлений.
Отсутствие подобных проблем не значит отсутствие работы. В этом случае ревьюер ищет возможности для улучшения, оставляет фидбек и возвращает автору на доработку.
Обучение и обмен знаниями
Цель Code Review — не просто поиск недочетов и багов, а также обучение, обмен опытом среди разработчиков. Процесс важно сделать максимально полезным благодаря изучению различных точек зрения.
Рецензент после CR не должен чувствовать себя виноватым из-за недостаточности знаний. Важно, чтобы он понял комментарий ревьюера и почему важно внести исправления в соответствии с ним.
Как проводить эффективные код-ревью?
Существуют общие закономерности при проведении код-ревью. Рекомендации:
- Автоматизация. Облегчает работу и снижает риск ошибок.
- Проверка каждого программиста. Погрешность может допустить и джун, и старший разработчик, поэтому важно создать
- Диагностика задач. Обзор должен быть цельным, а не выборочным.
- Соблюдение правила — смотреть не более 200-400 строк кода за один прием. Объемные задачи рекомендуется дробить.
Лучшие практики и советы
CR может как принести пользу, так и навредить в зависимости от качества фидбека. Полезная обратная связь помогает создать высокое качество кодовой базы.
Во время обзоров можно продемонстрировать свой опыт, а также стать наставником для других разработчиков и внести свой вклад в рост команды.
Инструменты для код-ревью
Популярные инструменты для проведения ревью:
GitHub — инструмент обзора с помощью pull-запросов, когда ревьюер получает доступ к репозиторию, может привязать себя к запросам и завершить ревью.
Review Board — open-source решение. В зависимости от требованийпозволяет выполнять проверку как pre-commit, так и post-commit.
Upsource — инструмент, который обладает всеми необходимыми функциями для автоматизации и дает возможность проверять на мобильных устройствах.
Примеры успешных код-ревью
Кейсы из практики ведущих компаний
Результат опроса программистов Microsoft показал, что 36% разработчиков компании проводят CR несколько раз за день, 39% — по одному ревью каждый день.
Ревью кода в Microsoft, как видно по результатам большинства опрошенных, считают полезной практикой, которая позволяет искать неисправности, обучать сотрудников и самосовершенствоваться.
В компании используют внутреннюю программу CodeFlow. Программа делает автоматическую рассылку ревьюерам и содержит множество рабочих инструментов для комментирования и обсуждения.
Роль код-ревью в развитии команды
Систематический CR, создание списков полезных комментариев и конструктивных предложений, активное сотрудничество с ревьюером способствуют формированию более качественного и стабильного кода, а также профессиональному развитию каждого участника команды разработки.