Какие знаешь основные принципы SOLID

Python Junior Без компании
Какие знаешь основные принципы SOLID
Ответы
SOLID — это пять принципов объектно-ориентированного проектирования, которые помогают создавать гибкий и поддерживаемый код: - **Single Responsibility (SRP)** — класс должен иметь только одну причину для изменения (одну ответственность). ``` # Плохо: класс и логирует, и сохраняет данные class User: def save(self): ... def log(self): ... # Хорошо: разделение на два класса class User: def save(self): ... class Logger: def log(self): ... ``` - **Open-Closed (OCP)** — классы должны быть открыты для расширения, но закрыты для модификации. ``` class Discount: def apply(self): ... class VIPDiscount(Discount): # Расширение без изменения базового класса def apply(self): ... ``` - **Liskov Substitution (LSP)** — подклассы должны заменять родительские классы без изменения поведения программы. ``` class Bird: def fly(self): ... class Penguin(Bird): # Нарушение LSP, т.к. пингвины не летают def fly(self): raise NotImplementedError ``` - **Interface Segregation (ISP)** — клиенты не должны зависеть от методов, которые они не используют. ``` # Плохо: один интерфейс с избыточными методами class Worker: def work(self): ... def eat(self): ... # Хорошо: разделение интерфейсов class Workable: def work(self): ... class Eatable: def eat(self): ... ``` - **Dependency Inversion (DIP)** — зависимости должны строиться на абстракциях, а не на конкретных реализациях. ``` class Database(ABC): @abstractmethod def save(self): ... class MySQL(Database): ... class UserService: def __init__(self, db: Database): ... # Зависимость от абстракции ```