Встречается на собеседованиях • сегодня
Какая проблема происходит, когда зависимость в коде не инвертирована
Когда зависимости не инвертированы (нарушается принцип инверсии зависимостей - D из SOLID), код становится жестко связанным. Это приводит к:
- Сложностям в тестировании - нельзя подменить реальные зависимости моками
- Трудностям модификации - изменения в зависимом классе требуют правок во всех использующих его классах
- Нарушению принципа единой ответственности
Пример плохого кода:
python
class MySQLDatabase:
def save(self, data):
print(f"Saving {data} to MySQL")
class App:
def __init__(self):
self.db = MySQLDatabase() # жесткая привязка
def process(self, data):
self.db.save(data)Хороший вариант с инверсией:
python
from abc import ABC, abstractmethod
class Database(ABC):
@abstractmethod
def save(self, data): pass
class App:
def __init__(self, db: Database): # зависимость через интерфейс
self.db = db
def process(self, data):
self.db.save(data)Теперь можно легко подменять реализацию БД и тестировать App изолированно.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы