Ответ
В нашей Node.js-команде Code Review — обязательный этап перед мерджем в main. Процесс выглядит так:
- Создание PR: Разработчик создает Pull Request в GitHub. Мы используем шаблон, который включает:
- Описание изменений и ссылку на задачу (Jira/Linear).
- Чеклист (добавлены тесты, обновлена документация).
- Скриншоты для UI-изменений.
- Назначение ревьюверов: Автоматически назначается 1-2 ревьювера из команды, знакомых с контекстом.
- Проверка: Ревьюверы проверяют:
- Соответствие кодстайлу: Используем ESLint с конфигом
@typescript-eslintи Prettier для автоматического форматирования. - Архитектурные решения: Соответствует ли код принципам чистой архитектуры, не создает ли лишних зависимостей.
- Тесты: Есть ли юнит- и интеграционные тесты для новой логики. Используем Jest и Supertest.
- Безопасность и перформанс: Нет ли уязвимостей (инъекции, XSS), не деградировала ли производительность.
- Читаемость: Названия функций и переменных понятны, сложная логика задокументирована с помощью JSDoc.
- Соответствие кодстайлу: Используем ESLint с конфигом
Пример улучшения кода после ревью:
// Было (до ревью)
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 в течение одного рабочего дня. Комментарии всегда конструктивные, с прямыми ссылками на документацию или примеры из кодовой базы.