Какие типовые ошибки встречаются при ревью кода
Что проверяют
Насколько вы опытный ревьюер: замечаете ли то, что ломает прод, или только отступы. У вопроса двойное дно: интересны и ошибки в коде, и ошибки самого процесса ревью. Следом просят пример замечания, которое спасло от бага.
Как отвечать
Разделите ответ на две части. Сначала что чаще всего находится в Python-коде:
- изменяемый аргумент по умолчанию:
def f(items=[])делит один список между всеми вызовами; - проглоченные исключения:
except Exception: passили голыйexcept:, который ловит дажеKeyboardInterrupt; - блокирующие вызовы в async-коде:
requests.getилиtime.sleepвнутриasync defостанавливают весь event loop; - работа со временем: наивные
datetimeиdatetime.utcnow(), который объявлен устаревшим в Python 3.12; - ресурсы без контекстного менеджера: файлы, соединения и транзакции без
with; - база: SQL через f-строку и N+1 запросов в ORM;
- сравнение через
is: для строк и чисел нужно==, аisоставляют дляNone.
Потом ошибки самого ревью: спор о стиле, который должны ловить ruff и форматтер в CI; мерж-реквесты на тысячу строк, где внимательно читают только первые файлы; замечания без объяснения вроде «переделай»; апрув без просмотра тестов.
Дальше личный опыт. Приведите свой пример: какую ошибку поймали, чем бы она обернулась, какое правило после этого добавили в линтер или чек-лист. Цифры нужны ваши, а если их нет, опишите качественный результат. Если ревью вы пока в основном получали, а не проводили, так и скажите и расскажите, какие замечания к вашему коду оказались самыми полезными.
Где спотыкаются
Перечисляют только стиль и PEP 8. Для этого есть автоматика, а от человека ждут логики, граничных случаев и архитектуры.
Приносят ошибки из других языков: неинициализированные переменные или уверенность, что GIL защищает от гонок. counter += 1 из нескольких потоков в Python всё равно не атомарен.
Описывают ревью как поиск виноватого. Тон «кто так пишет» разрушает процесс, а интервьюеру важно, умеете ли вы писать замечания, которые принимают без обиды.