Какие есть принципы SOLID

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

Ответ

Single Responsibility Principle (SRP)
Каждый модуль/класс должен иметь одну ответственность.
Пример:

type User struct { ... } // хранение данных
type UserDB struct { ... } // работа с БД

Open-Closed Principle (OCP)
Сущности должны быть открыты для расширения, но закрыты для изменений.
Пример: использование интерфейсов для добавления новых типов без модификации существующего кода.

Liskov Substitution Principle (LSP)
Подтипы должны быть заменяемы базовыми типами. В Go это соблюдается через интерфейсы.

Interface Segregation Principle (ISP)
Много специализированных интерфейсов лучше одного общего.
Пример:

type Reader interface { Read() }
type Writer interface { Write() }

Dependency Inversion Principle (DIP)
Зависимости должны строиться на абстракциях, а не на деталях.
Пример: внедрение зависимостей через интерфейсы.

SOLID улучшает читаемость, тестируемость и гибкость кода.