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

Какие принципы SOLID использовал во время рефакторинга кода

При рефакторинге кода на Python я чаще всего применяю следующие принципы SOLID:

  1. Single Responsibility (SRP) — каждый класс должен иметь одну ответственность. Например, разделяю логику обработки данных и их сохранения в разные классы.
python
# До рефакторинга
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

text

2. **Open/Closed (OCP)** — классы должны быть открыты для расширения, но закрыты для модификации. Использую абстрактные классы или интерфейсы.

3. **Liskov Substitution (LSP)** — подклассы должны заменять родительские классы без изменения поведения. Например, если `Duck` наследует `Bird`, то он должен поддерживать все методы `Bird`.

4. **Interface Segregation (ISP)** — клиенты не должны зависеть от интерфейсов, которые они не используют. Разделяю большие интерфейсы на более мелкие.

5. **Dependency Inversion (DIP)** — зависимости должны строиться на абстракциях, а не на конкретных реализациях. Вместо прямого создания объектов использую DI.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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