SOLID простыми словами
S -Single Responsibility Principle (Принцип единственной ответственности)
Один объект решает только одну задачу, а не несколько.
Плохо: Структура User умеет и хранить данные, и сохранять их в БД.
Хорошо: User хранит данные, UserRepository занимается сохранением.
O -Open/Closed Principle (Принцип открытости/закрытости)
Классы открыты для расширения но закрыты для модификации, весь новый функционал это наследование от текущего класса (в рамках разумного).
Суть: Мы добавляем новый функционал, не меняя старый код, а расширяя его через интерфейсы.
L -Liskov Substitution Principle (Принцип подстановки Лисков)
Класс работающий с определенным классом должен работать и с его наследниками, наследуемый класс должен дополнять а не замещать функции родителя.
Суть: Производный тип не должен ломать логику базового. Если функция ждет интерфейс, любая реализация должна вести себя предсказуемо.
I -Interface Segregation Principle (Принцип разделения интерфейсов)
Разделение интерфейсов с жирных на более мелкие. заставляем клиента реализовывать только тот интерфейс которым он пользуется.
Плохо: Интерфейс Worker с методами Eat() и Work(). Робот не ест, но обязан реализовать метод.
Хорошо: Разделяем на мелкие части.
D -Dependency Inversion Principle (Принцип инверсии зависимостей)
Классы зависят от абстракций а не от конкретных реализаций.
Суть: Высокоуровневый код не зависит от деталей (БД, API), он зависит от интерфейсов.
термины
рабработка
программирование
golang