Sobes.tech
Back to questions
Middle
5

Расскажи про принципы SOLID. Как применяли в проекте?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Принципы SOLID — это пять основных принципов объектно-ориентированного программирования, направленных на создание гибкого и поддерживаемого кода:

  • S (Single Responsibility Principle) — класс должен иметь одну ответственность.
  • O (Open/Closed Principle) — программные сущности должны быть открыты для расширения, но закрыты для модификации.
  • L (Liskov Substitution Principle) — объекты подклассов должны заменять объекты базовых классов без нарушения работы программы.
  • I (Interface Segregation Principle) — лучше иметь несколько специализированных интерфейсов, чем один универсальный.
  • D (Dependency Inversion Principle) — модули верхнего уровня не должны зависеть от модулей нижнего уровня; оба должны зависеть от абстракций.

Применение в проекте: В одном из проектов я использовал SOLID для рефакторинга монолитного кода. Например, разделил большие классы на более мелкие с одной ответственностью (SRP), ввёл абстрактные классы и интерфейсы для расширения функционала без изменения существующего кода (OCP), и применил внедрение зависимостей (DIP) для упрощения тестирования и повышения модульности.

Пример на Python:

from abc import ABC, abstractmethod

class PaymentProcessor(ABC):
    @abstractmethod
    def pay(self, amount):
        pass

class CreditCardProcessor(PaymentProcessor):
    def pay(self, amount):
        print(f"Оплата {amount} с помощью кредитной карты")

class Order:
    def __init__(self, processor: PaymentProcessor):
        self.processor = processor

    def checkout(self, amount):
        self.processor.pay(amount)

# Использование
processor = CreditCardProcessor()
order = Order(processor)
order.checkout(100)

Такой подход позволяет легко добавлять новые способы оплаты без изменения класса Order.