К каким последствиям приводит нарушение принципов SOLID?

«К каким последствиям приводит нарушение принципов SOLID?» — вопрос из категории ООП, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нарушение принципов SOLID ведет к созданию жестко связанного, хрупкого и сложного в поддержке кода.

Основные последствия:

  1. Жесткая связанность (Tight Coupling): Изменения в одном модуле вызывают волну правок в других (нарушение DIP).
  2. Сложность тестирования: Классы, нарушающие SRP или DIP, сложно изолировать для модульного тестирования.
  3. Хрупкость системы: Небольшие изменения ломают функциональность в неочевидных местах (нарушение OCP).
  4. Дублирование кода: Нарушение LSP или ISP заставляет копировать логику для разных случаев.
  5. Монолитные классы: Классы с множеством обязанностей (нарушение SRP) становятся слишком большими и сложными.

Пример нарушения SRP:

class ReportService {
    public void generateReport(Data data) { /* логика генерации */ }
    public void saveToFile(Report report) { /* логика сохранения */ }
    public void printReport(Report report) { /* логика печати */ }
}

Этот класс отвечает за генерацию, сохранение и печать отчетов. Его следует разделить на ReportGenerator, ReportRepository и ReportPrinter.

Соблюдение SOLID делает код расширяемым, тестируемым и адаптивным к изменениям.