Какие принципы SOLID использовал во время рефакторинга кода
Python
Junior
Рунити
Какие принципы SOLID использовал во время рефакторинга кода
Ответы
При рефакторинге кода на Python я чаще всего применяю следующие принципы SOLID:
- **Single Responsibility (SRP)** — каждый класс должен иметь одну ответственность. Например, разделяю логику обработки данных и их сохранения в разные классы.
```
# До рефакторинга
class Report:
def generate_report(self, data):
# генерация отчета
pass
def save_to_file(self, report, filename):
# сохранение в файл
pass
# После рефакторинга
class ReportGenerator:
def generate(self, data):
pass
class ReportSaver:
def save(self, report, filename):
pass
```
- **Open/Closed (OCP)** — классы должны быть открыты для расширения, но закрыты для модификации. Использую абстрактные классы или интерфейсы.
- **Liskov Substitution (LSP)** — подклассы должны заменять родительские классы без изменения поведения. Например, если `Duck` наследует `Bird`, то он должен поддерживать все методы `Bird`.
- **Interface Segregation (ISP)** — клиенты не должны зависеть от интерфейсов, которые они не используют. Разделяю большие интерфейсы на более мелкие.
- **Dependency Inversion (DIP)** — зависимости должны строиться на абстракциях, а не на конкретных реализациях. Вместо прямого создания объектов использую DI.