Sobes.tech
Назад к вопросам
Senior
4

Расскажи про SOLID. Что это такое?

Компании, где спрашивали
purrweb

Ответ от нейросети

sobes.tech AI

SOLID — это набор пяти принципов объектно-ориентированного программирования, направленных на создание гибкого, расширяемого и поддерживаемого кода:

  • S (Single Responsibility Principle) — принцип единственной ответственности: класс должен иметь только одну причину для изменения.
  • O (Open/Closed Principle) — принцип открытости/закрытости: программные сущности должны быть открыты для расширения, но закрыты для модификации.
  • L (Liskov Substitution Principle) — принцип подстановки Барбары Лисков: объекты подклассов должны заменять объекты базовых классов без нарушения корректности программы.
  • I (Interface Segregation Principle) — принцип разделения интерфейса: лучше много специализированных интерфейсов, чем один универсальный.
  • D (Dependency Inversion Principle) — принцип инверсии зависимостей: модули верхнего уровня не должны зависеть от модулей нижнего уровня, оба должны зависеть от абстракций.

Пример на Go (принцип единственной ответственности):

// Плохо: класс отвечает и за работу с данными, и за вывод
type User struct {
    Name string
}

func (u *User) Save() {
    // сохранение в базу
}

func (u *User) Print() {
    fmt.Println(u.Name)
}

// Хорошо: разделяем ответственность

type User struct {
    Name string
}

type UserRepository struct {}

func (r *UserRepository) Save(u *User) {
    // сохранение в базу
}

func PrintUser(u *User) {
    fmt.Println(u.Name)
}

Так код становится проще поддерживать и расширять.