Что такое SOLID

«Что такое SOLID» — вопрос из категории ООП, который задают на 69% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SOLID — это пять принципов объектно-ориентированного проектирования, направленных на создание понятного, гибкого и поддерживаемого кода. В контексте JavaScript/TypeScript и Node.js они помогают структурировать приложения, особенно при использовании классов и TypeScript.

  1. SRP (Принцип единственной ответственности): Класс или модуль должен иметь только одну причину для изменения.
    // Плохо: Класс User занимается и бизнес-логикой, и логированием.
    class UserService {
      saveUser(user) { /* ... */ }
      logActivity(activity) { /* ... */ } // Нарушение SRP
    }
    // Хорошо: Ответственности разделены.
    class UserService {
      constructor(logger) { this.logger = logger; }
      saveUser(user) {
        // логика сохранения
        this.logger.log(`User ${user.id} saved`);
      }
    }
  2. OCP (Принцип открытости/закрытости): Сущности должны быть открыты для расширения, но закрыты для модификации. Достигается через абстракции и композицию.
  3. LSP (Принцип подстановки Барбары Лисков): Объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности программы.
  4. ISP (Принцип разделения интерфейса): Много специализированных интерфейсов лучше, чем один общий. Клиенты не должны зависеть от методов, которые они не используют.
  5. DIP (Принцип инверсии зависимостей): Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракций. В Node.js это реализуется через Dependency Injection.

Видео-ответы