Какой принцип SOLID считается самым фундаментальным и почему?

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

Ответ

Наиболее фундаментальным принципом SOLID часто называют Принцип единственной ответственности (Single Responsibility Principle - SRP). Он формулируется как: «Класс должен иметь лишь одну причину для изменения».

Почему SRP — основа:

  1. Снижает связность (coupling): Класс, делающий одно, меньше зависит от других частей системы.
  2. Повышает сцепление (cohesion): Все методы класса работают для одной, четкой цели.
  3. Упрощает тестирование, понимание и поддержку: Изменения в одной бизнес-логике затрагивают только один класс.

Пример нарушения и исправления:

// НАРУШЕНИЕ: Класс отвечает и за данные пользователя, и за логику уведомлений.
class User {
    private String email;
    void saveToDatabase() { /* ... */ }
    void sendEmail(String content) { /* ... */ } // Другая ответственность!
}
// СОБЛЮДЕНИЕ SRP: Ответственности разделены.
class User { private String email; /* только данные */ }

class UserRepository { // Ответственность: работа с хранилищем
    void save(User user) { /* ... */ }
}

class NotificationService { // Ответственность: отправка уведомлений
    void sendEmail(User user, String content) { /* ... */ }
}

Соблюдение SRP естественным образом подводит к соблюдению других принципов SOLID (например, Open/Closed).