А зачем вообще тратить время на code review?
Продолжу тему code review ответом на ещё один вопрос подписчика А будет рассказ про цели ревью? Используете ли его в основном для распространения знаний, синхронизации по архитектуре или поиска багов? На эту тему тоже холивары бывают.) Мне доводилось проводить code review с самыми разными целями.
Коллективное владение кодом
Члены одной команды ревьюят друг друга обычно именно для того, чтобы все знали, как устроен код их проекта. Ну и чтобы одни и те же вещи делались в проекте одним и тем же способом.
Я помню лихие времена своих первых двух лет в Яндексе, когда у нас ещё не было обязательного ревью всех коммитов, — разработчики сразу заливали исправления со словами «Я исправил». И никто не знал, а как именно это было сделано. А потом в коде обнаруживались сюрпризы 😆
Когда каждое изменение отсматривается хотя бы одним членом команды, это сильно урезает велосипедостроение, а главное — ускоряет дальнейшую работу с новым кодом.
Передача знаний
Этим я очень много занимался в Яндекс Еде. Когда я только туда пришёл, Еда переезжала с PHP на C. У нас была группа из трёх экспертов по С, которые смотрели все PR'ы на этом языке. Мы не столько вникали в суть решаемой задачи, сколько доносили идиоматические способы программировать на C++ с использованием userver.
Сюда же идёт вся моя многочисленная практика онбордингов разработчиков в Еде. Например, я руководил техническим буткемпом в userver в Еде. И там мы использовали code review как способ показать, как у нас принято решать те или иные типовые задачи. Я разработал специальную задачу, которую выполнял каждый новый разработчик в Еде, и потом на code review мы поясняли: что он сразу сделал как принято, а что надо сделать иначе.
Поддержание архитектурной целостности
Отчасти перекликается с первым пунктом, но цель не в том, чтобы все знали, как всё устроено, а в том, чтобы не плодить велосипеды. В моей второй команде в Яндексе мы делали большой С проект с нуля. У нас собралось 5 сильных и умных разработчиков на С, и у каждого было своё мнение, как надо писать код «правильно». Мы устраивали жаркие споры в PR'ах, когда кто-то делал свою часть по-своему. Много копий тогда было сломано, но, в конце концов, мы более или менее находили общий для всех подход, который потом уже применяли все.
Поиск дурацких багов
Баги должны ловить тесты, а не люди на ревью. Тем не менее, нет-нет, да и вылезет что-то, что стреляет раз в тысячелетие, тестами не ловится, но бьёт очень больно. Такие баги часто случаются из-за незнания каких внутренних особенностей или простой невнимательности. И свежий взгляд со стороны очень полезен, чтобы их поймать.
Так что поиск багов — это точно не главная цель ревью, но полезная фича.
С этим хорошо справляется наш процесс review as a service в Pangolin. Я уже не раз получал подобные комментарии к своим PR'ам и восклицал: «Как хоть я сам-то не заметил?!» В этом как раз и есть польза внешнего взгляда.
Для каких целей вы проводите code review у себя?
Напоминаю, что вы можете обратиться ко мне за консультацией через сервис GetMentor. Можно провести разовую консультацию или пойти в регулярную работу (сейчас есть одно место из двух). Ко мне обращаются люди с такими запросами: — подготовка к собеседованию в HFT компанию — мок-интервью по алгоритмам, чтобы оценить текущий уровень и определить пробелы — code review многопоточного кода на C++
Отзывы о проведённых встречах в отдельном канале.
В этом посте были ссылки, но мы их удалили по правилам Сетки
· 15.04
Обычно любой проект начинается с проекта, и wiki + doxigen + gitlab. И история проекта ведётся в wiki и gitlab, в wiki рукописная в gitlab в виде лога изменений. Иногда любопытно смотреть пересечения событий в wiki и в gitlab.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён