SOLID

"SOLID — это набор принципов для написания поддерживаемого и масштабируемого кода. S — одна ответственность, O — расширяемость без изменения кода, L — корректная подстановка наследников, I — разделение интерфейсов, D — зависимость от абстракций, а не от конкретных реализаций."


S — Single Responsibility Principle (Принцип единственной ответственности)

Идея: Класс или модуль должен иметь только одну причину для изменения. Зачем: Уменьшает связанность, упрощает поддержку. Пример:

# Плохо — класс делает и валидацию, и сохранение
class User:
    def save(self):
        pass
    def validate(self):
        pass

# Хорошо — разделили ответственность
class User:
    pass

class UserValidator:
    def validate(self, user):
        pass

class UserRepository:
    def save(self, user):
        pass

O — Open/Closed Principle (Принцип открытости/закрытости)

Идея: Код должен быть открыт для расширения, но закрыт для изменения. Зачем: Добавляем новое поведение без переписывания старого кода. Пример:


L — Liskov Substitution Principle (Принцип подстановки Барбары Лисков)

Идея: Объекты подклассов должны заменять объекты базовых классов без изменения поведения. Зачем: Предотвращает неожиданное поведение при полиморфизме. Пример:


I — Interface Segregation Principle (Принцип разделения интерфейсов)

Идея: Не заставляй клиента реализовывать интерфейс, который он не использует. Зачем: Избегаем "толстых" интерфейсов. Пример:


D — Dependency Inversion Principle (Принцип инверсии зависимостей)

Идея: Модули верхнего уровня не должны зависеть от модулей нижнего уровня, оба должны зависеть от абстракций. Зачем: Облегчает тестирование и замену реализаций. Пример:

Last updated

Was this helpful?