Sobes.tech
Назад к вопросам
Junior — Middle
89

Можете объяснить принцип L из SOLID и его значение при проектировании кода?

Компании, где спрашивали
РедСофт

Ответ от нейросети

sobes.tech AI

Принцип L из SOLID — это Принцип подстановки Лисков (Liskov Substitution Principle, LSP). Он гласит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности программы.

Проще говоря, если класс B наследует класс A, то везде, где используется объект A, можно подставить объект B, и программа должна работать правильно, не меняя своего поведения.

Значение при проектировании:

  • Обеспечивает правильное наследование и полиморфизм.
  • Помогает избегать неожиданных ошибок при расширении функционала.
  • Способствует созданию гибких и расширяемых архитектур.

Пример на C++:

class Bird {
public:
    virtual void fly() {
        // реализация полёта
    }
};

class Sparrow : public Bird {
    // воробей умеет летать, всё нормально
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Страус не умеет летать");
    }
};

Здесь Ostrich нарушает принцип LSP, так как подкласс не поддерживает поведение базового класса. Лучше спроектировать иерархию иначе, например, выделить интерфейс летающих птиц.