Как проводить code review: порядок чтения диффа, приоритизация замечаний (blocker / major / nit), формулировки, которые автор принимает. Базовые категории проблем — баги, безопасность, производительность, тесты, документация — на уровне «что обязан заметить любой ревьюер». Разборы настоящих диффов с комментариями ревьюера.
Ревью — это не чтение кода. Это решение: что блокирует мердж, что стоит обсудить, а что нужно молча пропустить.
Чему учит курс
Разработчик, который знает язык, ещё не умеет ревьюить. Умение читать чужой дифф в незнакомом контексте, за двадцать минут находить в нём то, что действительно сломается в проде, и писать замечания так, чтобы автор их принял, — отдельный навык. Ему и посвящён курс.
Каждая тема устроена одинаково: сначала принцип, затем разбор настоящего диффа с комментариями ревьюера дословно — в той формулировке, в которой их пишут в PR, — и тренировка на упражнениях.
Границы курса
Курс
Отвечает на вопрос
Основы Code Review (этот)
Как проводить ревью: порядок чтения диффа, приоритеты замечаний, формулировки
Как устроить процесс: SLA, метрики, культура, конфликты
Внутри этого курса безопасность и производительность разбираются на уровне «что обязан заметить любой ревьюер». Глубокий разбор — CWE, криптография, модели авторизации, кэширование и очереди — в Pro.
Покрытие тестами, моки, assertion quality, edge cases в тестах
8 вопросов
7
Рецензирование документации
Docstrings, комментарии, README, changelog, документация API
8 вопросов
8
Soft skills в code review
Как давать feedback, этикет, работа с критикой, психология review
8 вопросов
Зачёт
Доступен после всех тем (0 из 8)
Экзамен
Доступен после зачёта
15 / 15
Code Review
Основы Code Review
Процесс систематической проверки исходного кода другими разработчиками для обнаружения ошибок, улучшения качества и обмена знаниями. Проводится до или после слияния кода в основную ветку.
Пример
Разработчик создаёт pull request, коллеги оставляют комментарии с замечаниями, автор вносит правки, после чего код мержится.
Связанные термины
Pull Request (PR)
Основы Code Review
Механизм в системах контроля версий (GitHub, GitLab) для предложения изменений в код. Позволяет обсудить изменения, провести code review и автоматические проверки перед слиянием.
Пример
git push origin feature-branch → создание PR на GitHub → review → merge в main.
Связанные термины
Approval (Approve)
Основы Code Review
Формальное одобрение изменений рецензентом. В большинстве систем означает, что код соответствует стандартам качества и готов к слиянию. Может требоваться от 1 до N человек.
Пример
Senior разработчик ставит 'Approve' в PR после того, как убедился, что все замечания устранены.
Связанные термины
Readability (Читаемость)
Качество кода
Характеристика кода, описывающая лёгкость его понимания другими разработчиками. Зависит от именования, структуры, комментариев, сложности логики.
Пример
Функция `calculate_user_discount(user, cart)` понятнее, чем `calc(u, c)`.
Связанные термины
Code Smell
Качество кода
Поверхностный признак потенциальной проблемы в коде. Сам по себе не является багом, но указывает на возможные нарушения принципов проектирования. Примеры: дублирование, длинные методы, большие классы.
Пример
Функция на 200 строк — code smell, указывающий на нарушение Single Responsibility Principle.
Связанные термины
Edge Case
Баги и ошибки
Сценарий использования, который возникает на границах допустимых входных данных или в экстремальных условиях. Часто становится источником багов.
Пример
Пустой список, отрицательное число, максимальное значение integer, null/None, специальная строка.
Связанные термины
SQL Injection
Безопасность
Уязвимость безопасности, позволяющая злоумышленнику выполнить произвольный SQL-код через внедрение вредоносных данных в запрос. Возникает при конкатенации пользовательского ввода с SQL-запросом.
Пример
query = f"SELECT * FROM users WHERE id = {user_id}" — уязвимо. Нужно использовать параметризованные запросы.
Связанные термины
XSS (Cross-Site Scripting)
Безопасность
Уязвимость, позволяющая внедрить вредоносный JavaScript в веб-страницу. Возникает при выводе пользовательских данных без экранирования.
Пример
Пользователь вводит `<script>alert('xss')</script>` в комментарий, и этот код выполняется в браузере другого пользователя.
Связанные термины
N+1 Query Problem
Производительность
Проблема производительности, когда для обработки N элементов выполняется N+1 запрос к базе данных (1 запрос для получения списка + N запросов для каждого элемента).
Пример
Получение списка постов, затем в цикле запрос автора для каждого поста. Решение: JOIN или eager loading.
Связанные термины
Временная сложность (Time Complexity)
Производительность
Оценка времени выполнения алгоритма в зависимости от размера входных данных. Обозначается O-нотацией (Big O). Примеры: O(1), O(log n), O(n), O(n²).
Пример
Поиск в отсортированном массиве — O(log n), перебор всех пар — O(n²).
Связанные термины
Mock (Мок)
Тестирование
Объект-заглушка, имитирующий поведение реального зависимого объекта в тестах. Используется для изоляции тестируемого кода и проверки взаимодействий.
Пример
Mock базы данных возвращает предопределённые данные без реального подключения к БД.
Связанные термины
Assertion (Утверждение)
Тестирование
Проверка ожидаемого результата в тесте. Хорошее assertion должно быть конкретным, понятным и проверять одну вещь.
Пример
assert result == 42 — хорошее; assert result — плохое (неясно, что ожидается).
Связанные термины
Docstring
Документация
Строка документации в Python, описывающая назначение функции, класса или модуля. Размещается сразу после объявления. Используется для генерации документации и подсказок в IDE.
Пример
def add(a, b): \"\"\"Складывает два числа.\n\nArgs: a, b — числа.\nReturns: Сумма.\"\"\"
Связанные термины
Constructive Feedback
Soft Skills
Форма обратной связи, которая фокусируется на конкретных улучшениях кода, а не на личности автора. Включает объяснение проблемы, предложение решения и обоснование.
Пример
Плохо: 'Это ужасный код'. Хорошо: 'Рекомендую вынести эту логику в отдельную функцию — это упростит тестирование и повторное использование'.
Связанные термины
Psychological Safety
Soft Skills
Атмосфера в команде, где разработчики чувствуют себя комфортно, задавая вопросы, признавая ошибки и предлагая идеи без страха быть осмеянными или наказанными.
Пример
В команде с психологической безопасностью junior разработчик не боится спросить 'почему так?' в code review.
Связанные термины
Частые вопросы о курсе «Основы Code Review»
Состав курса, уровни, практика и способы проверки знаний.
Что входит в курс «Основы Code Review»?
Курс включает 8 тем и 64 вопроса с разбором ответа. Начать можно с первой темы курса.
Для какого уровня рассчитан курс «Основы Code Review»?
Маршрут охватывает уровни Junior, Middle, Senior. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.
Да, курс полностью бесплатный: все 8 тем доступны без оплаты.
Курс, а не тренажёр
Этот курс даёт теорию: принципы, чек-листы, типы проблем и soft skills код-ревью — с уроками и тестами по темам. Если нужна практика на реальном коде — находить баги и уязвимости в конкретных фрагментах — для этого есть отдельный интерактивный тренажёр.