Ответ
Да, такие ситуации возникают. Основные проблемы — нарушение принципов 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);
}
}
Как давать обратную связь:
- Быть конструктивным: Критиковать код, а не автора. Использовать "мы" ("Можно улучшить читаемость, если...").
- Объяснять "почему": Не просто указать на ошибку, а объяснить последствия ("Это усложнит тестирование", "При изменении логики скидок придется менять этот метод").
- Предлагать альтернативы: Показать, как можно исправить, приведя пример кода или ссылку на руководство по стилю.
- Сфокусироваться на важном: Не требовать изменений ради стилистических предпочтений, если код функционален и понятен.