Как проходит Code Review на текущем месте работы

«Как проходит Code Review на текущем месте работы» — вопрос из категории Софт-скиллы, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

В нашей Node.js-команде Code Review — обязательный этап перед мерджем в main. Процесс выглядит так:

  1. Создание PR: Разработчик создает Pull Request в GitHub. Мы используем шаблон, который включает:
    • Описание изменений и ссылку на задачу (Jira/Linear).
    • Чеклист (добавлены тесты, обновлена документация).
    • Скриншоты для UI-изменений.
  2. Назначение ревьюверов: Автоматически назначается 1-2 ревьювера из команды, знакомых с контекстом.
  3. Проверка: Ревьюверы проверяют:
    • Соответствие кодстайлу: Используем ESLint с конфигом @typescript-eslint и Prettier для автоматического форматирования.
    • Архитектурные решения: Соответствует ли код принципам чистой архитектуры, не создает ли лишних зависимостей.
    • Тесты: Есть ли юнит- и интеграционные тесты для новой логики. Используем Jest и Supertest.
    • Безопасность и перформанс: Нет ли уязвимостей (инъекции, XSS), не деградировала ли производительность.
    • Читаемость: Названия функций и переменных понятны, сложная логика задокументирована с помощью JSDoc.

Пример улучшения кода после ревью:

// Было (до ревью)
async function getData(id) {
  const data = await db.query('SELECT * FROM users WHERE id = ?', [id]);
  return data;
}

// Стало (после ревью)
import { UserRepository } from '../repositories/user.repository';
import { NotFoundError } from '../errors/not-found.error';

/**
 * Получает данные пользователя по ID.
 * @param {string} userId - UUID пользователя.
 * @throws {NotFoundError} Если пользователь не найден.
 */
async function getUserById(userId) {
  const user = await UserRepository.findById(userId);
  if (!user) {
    throw new NotFoundError(`User with id ${userId} not found`);
  }
  return user;
}

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