← Назад к вопросам

На что обращаешь внимание в первую очередь при проведении code review?

2.0 Middle🔥 111 комментариев
#Soft Skills#Архитектура и паттерны

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Code Review: Приоритеты проверки

При проведении code review я применяю системный подход, проверяя изменения слоями от критичного к деталям. Это позволяет выявить проблемы на ранних этапах и обеспечить качество кода.

1 Функциональность и логика (критичный приоритет)

В первую очередь проверяю, что код работает корректно:

# Неправильная логика
def calculate_discount(price, percentage):
    return price * percentage  # Забыл разделить на 100

# Правильно
def calculate_discount(price, percentage):
    return price * (percentage / 100)
  • Соответствует ли логика требованиям задачи
  • Нет ли edge cases, которые не обработаны
  • Правильно ли обработаны граничные значения

2 Безопасность

Проверяю критичные уязвимости:

# SQL injection
def get_user(user_id):
    query = f"SELECT * FROM users WHERE id = {user_id}"
    return db.execute(query)

# Параметризованный запрос
def get_user(user_id):
    query = "SELECT * FROM users WHERE id = ?"
    return db.execute(query, (user_id,))
  • SQL injection, XSS, CSRF
  • Утечка чувствительных данных
  • Неправильная аутентификация

3 Читаемость и поддерживаемость

Проверяю качество кода:

# Нечитаемо
def f(l):
    return [x*2 for x in l if x%2==0]

# Понятно
def get_doubled_even_numbers(numbers: list[int]) -> list[int]:
    return [number * 2 for number in numbers if number % 2 == 0]
  • Понятные имена переменных
  • Адекватные комментарии
  • Логическое разделение кода

4 Архитектура и дизайн

Проверяю правильность структуры:

# God object (нарушение SRP)
class User:
    def authenticate(self): pass
    def send_email(self): pass
    def process_payment(self): pass

# Разделение ответственности
class User:
    def authenticate(self): pass

class EmailService:
    def send_email(self, user): pass
  • SOLID принципы
  • Разделение ответственности (SRP)
  • DRY (избегаем дублирования)

5 Тестирование

Проверяю качество тестов:

# Плохой тест
def test_user():
    u = User("John")
    assert u is not None

# Хороший тест
def test_user_creation():
    user = User(name="John")
    assert user.name == "John"
  • Есть ли тесты для новой функциональности
  • Покрывают ли они happy path и edge cases
  • Тесты независимы и не flaky

6 Производительность

Проверяю эффективность:

# N+1 query problem
for user in users:
    user.posts = Post.query.filter_by(user_id=user.id).all()

# Оптимизировано с joinedload
users = User.query.options(joinedload(User.posts)).all()
  • N+1 queries
  • Алгоритмическая сложность
  • Утечки памяти

7 Документация

Проверяю доступность информации:

# Без документации
def process(data):
    return data

# С документацией
def process_user_data(data: dict) -> dict:
    """Обработка данных пользователя."""
    return data

Чеклист Code Review

  • Код решает поставленную задачу
  • Нет критичных уязвимостей
  • Имена переменных понятны
  • Нет дублирования кода
  • Архитектура правильная
  • Есть тесты
  • Нет проблем производительности
  • Документация актуальна

Вывод

В code review главное — это баланс между качеством и скоростью. Я сначала проверяю критичное (функциональность, безопасность), потом переходу к деталям. Это позволяет выявить серьезные проблемы быстро и дать конструктивный feedback.

На что обращаешь внимание в первую очередь при проведении code review? | PrepBro