Ревью кода — это довольно обыденный процесс. Хотя и немногие могут объяснить, зачем это нужно команде — ревью будто без вопросов необходимо для мифического "хорошего кода". В целом, сообразить пару причин, зачем же просматривать код коллег, довольно просто, но такие причины далеко не всегда имеют весомое подтверждение. И далеко не всегда ревью достигает предполагаемых целей из-за недостаточного качества ревью и вовлечения команды.
Я расскажу про причину, зачем вам лично может быть полезно ревью кода сокомандников. С небольшим примером и исследованием.
Стандартные цели ревью кода
Прежде всего давайте перечислим популярные и стандартные цели, которых разработчики хотят добиться через ревью кода:
Проверить отсутствие дыр в безопасности
Убедиться в соответствии кода с требованиями
Проверить архитектурные решения
Проверить code-style
Проверить возможные проблемы с производительностью
Найти баги и ошибки
Убедиться в легкости (хотя бы относительно :) ) будущих модификаций и поддержки
Обмен знаниями
Почти все эти цели нацелены на решение багов и возможных проблем в будущем. То есть улучшаем качество кода, чтобы в будущем было меньше багов. Ну и лучше качество — более счастливые разработчики, а значит код легче читать и сопровождать :)
Отлично — смотрим код, чтобы качество кода было получше. Но зачем лично разработчику смотреть код, какая польза здесь и сейчас? В списке целей есть последний пункт "обмен знаниями". Обычно это означает обучение менее опытных разработчиков особенностям проекта и в целом написания кода. Но что насчет просто чтения?
Собственно, зачем?
Чтение кода позволяет быть более знакомым с кодом. А чем больше разработчик знаком с кодом, тем более он им доволен! Оказывается, то, как люди воспринимают "качество кода", определяется не только сложностью этого кода. Но и тем, как разработчики знакомы с кодом. Знакомство с кодом играет большую роль в восприятии кода.
Те, кто делают ревью чаще, обычно оценивают код как более "качественный", чем те, кто меньше делает ревью. У команды может быть несколько кодовых баз, которые похожи по качеству кода. Но люди будут воспринимать один код как "хороший", а другой как "плохой" просто на основе того, работали ли они с ним, или нет.
Пример и исследование
Можете посмотреть интересную историю о знакомости с кодом и его восприятии. Докладчик рассказывает историю про команду, у которой было несколько проектов. Код в одном проекте они называли "хорошим", а в другой "отстойным". Но после анализа сложности оказалось, что проекты очень похожи по качеству и сложности кода. То есть хорошим кодом оказался просто тот код, с которым эти разработчики работали. А плохим — код в малознакомом проекте, который им достался от другой команды.
Также есть исследование-опрос о ревью кода. В нем показывается, что разработчики, которые удовлетворены ревью кода (и делают его чаще), обычно более удовлетворены кодом их проекта. И наоборот, те, кто не удовлетворен процессом ревью кода, обычно оценивают код на проекте хуже.
Ревью кода полезно для тебя лично. И необязательно копать детали
Итак, причина читать код — это (как минимум) для того, чтобы отслеживать изменения и "индексировать" код у себя в голове. Совсем не обязательно сильно вдаваться в детали каждого пул реквеста, особенно когда проект гигантский. Но чтение хотя бы для понимания изменений и структуры кода поможет улучшить восприятие кодовой базы. В общем это хороший способ не грустить по поводу качества кода проекта :)
Комментарии (9)
Sensimilla
03.08.2021 16:29Рекомендации ревьювера обязательны к исполнению? Если нет, то к чему тогда этот мартышкин труд? А если обязательны, то кто даст гарантию, что эти рекомендации улучшат код?
Происходит размытие ответственности: код после исправления стал работать в три раза медленнее, разработчик всегда может сказать, что выполнил рекомендации ревьювера. При этом, ответственность за код остатся лежать на авторе, а решения в коде - от какого-то ревьювера
eugene0 Автор
03.08.2021 16:44Статья как раз про то, что ревью как минимум помогает с восприятием кода :) Чаще читаешь код коллег - этот код кажется более правильным. Проще читать в будущем и лучше отношение к проекту
Sensimilla
03.08.2021 16:58Ну это уже из области самовнушения. Иногда, чем больше читаешь, тем больше материшься
saboteur_kiev
03.08.2021 19:10+1Обычно ревьюверы это аппруверы пулл реквеста, поэтому пока ревьювер не поставит аппрув, код не замержить.
Sensimilla
03.08.2021 17:16-1В конце-концов, в наше время, когда пропагандируется и практикуется выпуск сырых неделеланных продуктов, которые потом умирают, так и не дойдя до массового потребителя, заботиться о красоте кода - это выбрасывать деньги на ветер. И акционер, и фин. директор за такое по головке не погладят. Вылизывание кода - это зло. Код должен выдаваться на гора, как у бригады стахановцев, а самые кричащие ошибки должны отлавливать тестеры.
LeonidShv
04.08.2021 10:14+1а я и не задумывался о всех этих преимуществах от код ревью
особенно понравилось исследование про "хороший" и "плохой" код
Sadler
В плане качества кода лично мне очень нравится вариант парного программирования, в котором не постфактум ловятся косяки в реализации и стилистические огрехи, а совместно проговаривается, почему делается так, а не вот так. Благо, в современных реалиях удалёнки для этого даже не нужно сидеть за одним столом.