Ответ
SOLID — это набор принципов объектно-ориентированного проектирования, которые помогают создавать гибкий и поддерживаемый код.
- Single Responsibility (SRP) — класс должен иметь одну причину для изменения.
type User struct { ... }
func (u *User) Save() error { ... } // Нарушение SRP
type UserRepository struct { ... } // Лучше: отдельный репозиторий
- Open-Closed (OCP) — сущности должны быть открыты для расширения, но закрыты для изменений.
type Shape interface { Area() float64 }
// Добавляем новые фигуры без изменения существующего кода.
-
Liskov Substitution (LSP) — подтипы должны заменять базовые типы.
-
Interface Segregation (ISP) — клиенты не должны зависеть от методов, которые не используют.
type Reader interface { Read() }
type Writer interface { Write() }
// Лучше мелкие интерфейсы, чем один большой.
- Dependency Inversion (DIP) — зависеть от абстракций, а не от деталей.
type DB interface { Query() }
type MySQL struct{} // Реализация DB
В Go особенно важны ISP и DIP из-за duck-typing.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶