Как вы поступаете, если в code review видите код низкого качества?

«Как вы поступаете, если в code review видите код низкого качества?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Да, такие ситуации возникают. Основные проблемы — нарушение принципов SOLID, избыточная сложность (high coupling) или отсутствие тестов.

Пример проблемного кода:

// Нарушение SRP: метод делает слишком много.
// Магические числа и прямая работа с БД/email в сервисе.
public void processOrder(Order order) {
    if (order.getItems().size() > 10) { // Магическое число 10
        applyDiscount(order, 0.1);
    }
    saveToDb(order);        // Прямой доступ к БД
    sendEmail(order);       // Прямая отправка email
}

Предлагаемый рефакторинг:

// Соблюдение SRP и инъекция зависимостей.
public class OrderProcessor {
    private final OrderRepository orderRepo;
    private final NotificationService notifier;
    private final DiscountPolicy discountPolicy;

    public void processOrder(Order order) {
        discountPolicy.applyIfEligible(order);
        orderRepo.save(order);
        notifier.sendConfirmation(order);
    }
}

Как давать обратную связь:

  1. Быть конструктивным: Критиковать код, а не автора. Использовать "мы" ("Можно улучшить читаемость, если...").
  2. Объяснять "почему": Не просто указать на ошибку, а объяснить последствия ("Это усложнит тестирование", "При изменении логики скидок придется менять этот метод").
  3. Предлагать альтернативы: Показать, как можно исправить, приведя пример кода или ссылку на руководство по стилю.
  4. Сфокусироваться на важном: Не требовать изменений ради стилистических предпочтений, если код функционален и понятен.