Что такое SOLID

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

Ответ

SOLID — это набор принципов объектно-ориентированного проектирования, которые помогают создавать гибкий и поддерживаемый код.

  1. Single Responsibility (SRP) — класс должен иметь одну причину для изменения.
    type User struct { ... }
    func (u *User) Save() error { ... } // Нарушение SRP
    type UserRepository struct { ... } // Лучше: отдельный репозиторий
  1. Open-Closed (OCP) — сущности должны быть открыты для расширения, но закрыты для изменений.
    type Shape interface { Area() float64 }
    // Добавляем новые фигуры без изменения существующего кода.
  1. Liskov Substitution (LSP) — подтипы должны заменять базовые типы.

  2. Interface Segregation (ISP) — клиенты не должны зависеть от методов, которые не используют.

    type Reader interface { Read() }
    type Writer interface { Write() }
    // Лучше мелкие интерфейсы, чем один большой.
  1. Dependency Inversion (DIP) — зависеть от абстракций, а не от деталей.
    type DB interface { Query() }
    type MySQL struct{} // Реализация DB

В Go особенно важны ISP и DIP из-за duck-typing.

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