Как происходил код ревью на прошлой работе

Ответ

На прошлой работе код-ревью проводилось через Pull Requests (PR) в GitHub. Процесс выглядел так:

  1. Разработчик создает PR, назначает ревьюверов (обычно 1-2 коллеги из команды)
  2. Ревьюверы проверяют код на:
    • Соответствие код-стайлу (через анализаторы вроде SonarQube)
    • Наличие Unit-тестов для новой логики
    • Оптимальность алгоритмов
    • Возможные edge-cases
  3. Комментарии оставляются прямо в PR, обсуждаются в треде
  4. После исправлений PR апрувится и мержится

Пример комментария в ревью:

// Вместо этого:
foreach(var item in list) { ... }

// Лучше использовать LINQ:
list.ForEach(item => ... );

Важные нюансы:

  • Время ответа на PR не должно превышать 1 рабочего дня
  • Критика только по коду, без перехода на личности
  • Обязательно отмечать и хорошие решения тоже

Ответ 18+ 🔞

А, ну расскажу, как у нас на прошлой работе этот цирк с код-ревью устраивали. Через эти ваши Pull Requests в GitHub, блядь. Процедура, мать её, священная, как в аптеке.

Вот пишешь ты код, потеешь, думаешь, что гениальность чистой воды. А потом — хуяк — создаёшь PR и назначаешь пару несчастных коллег ревьюверами. Обычно одного-двух, чтобы не очень распылялись. И начинается, ёпта, самое интересное.

Сидят эти товарищи и выискивают в твоём творении, как собаки сучками, всё подряд:

  1. Код-стайл. Тут без вариантов — если анализатор типа SonarQube орёт, что ты криво отступ поставил, то всё, пиши пропало. «Фикси, блядь, отступы, глаза кровоточат!»
  2. Юнит-тесты. Добавил новую логику? А где, сука, на неё тесты? Без них — ни шагу. «Хочешь в продакшен? Докажи, что эта штука не сломает всё к херам при первом же чихе пользователя».
  3. Алгоритмы. Тут могут придраться по-серьёзному. «А че это у тебя сложность O(n²), а? Ты что, совсем, блядь, с дуба рухнул? Переписывай на O(n log n), и чтобы я этого не видел!»
  4. Edge-cases. Это святое. «А если сюда null прилетит? А если список пустой? А если сервер упадёт, а пользователь — инопланетянин?» В общем, проверяют на вшивость со всех сторон.

Все претензии пишут прямо в PR, в комментах. И там же, в треде, идёт обсуждение — иногда конструктивное, а иногда просто трёп до посинения. Но, справедливости ради, ругались редко, больше по делу.

Вот, например, классический комментарий, который каждый второй получал:

// Вместо этого:
foreach(var item in list) { ... }

// Лучше использовать LINQ, чувак, не изобретай велосипед:
list.ForEach(item => ... );

И главное — были негласные правила, которые все знали, но которые иногда хуёво соблюдались:

  • Время ответа — не больше рабочего дня. А то бывало, зальёшь PR, а он висит сутки, и все делают вид, что не при делах. Бесило, блядь, конкретно.
  • Критика только по коду. Личности не трогаем. Не «ты — мудак», а «это решение — мудацкое». Чувствуешь разницу? Хотя иногда, конечно, срывало крышу, но старались держаться.
  • Хвалить тоже надо. Если решение офигенное — обязательно сказать. А то одни упрёки, так вообще руки опустятся. Поддержка, мать её, моральная.

В общем, процесс рабочий, но иногда такой бюрократичный, что просто ебать. Зато, справедливости ради, в продакшен меньше говна летело.