Встречается на собеседованиях • сегодня

Какая проблема происходит, когда зависимость в коде не инвертирована

Когда зависимости не инвертированы (нарушается принцип инверсии зависимостей - D из SOLID), код становится жестко связанным. Это приводит к:

  1. Сложностям в тестировании - нельзя подменить реальные зависимости моками
  2. Трудностям модификации - изменения в зависимом классе требуют правок во всех использующих его классах
  3. Нарушению принципа единой ответственности

Пример плохого кода:

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 изолированно.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы