Sobes.tech
Junior — Middle
117

Можете ли објаснити принцип L из SOLID и његово значење у дизајну кода?

Компаније где су питане
РедСофт

Одговор од АИ

sobes.tech АИ

Princip L iz SOLID-a je Princip zamene Liskov (Liskov Substitution Principle, LSP). On kaže da objekti podklase treba da budu zamenjivi sa objektima osnovne klase bez narušavanja ispravnosti programa.

Jednostavno rečeno, ako klasa B nasleđuje klasu A, svuda gde se koristi objekat A, može se zameniti objektom B, i program treba da radi ispravno, bez promene svog ponašanja.

Vrednost pri projektovanju:

  • Osigurava ispravno nasleđivanje i polimorfizam.
  • Pomaže da se izbegnu neočekane greške pri proširenju funkcionalnosti.
  • Podstiče kreiranje fleksibilnih i proširivih arhitektura.

Primer u C++:

class Bird {
public:
    virtual void fly() {
        // implementacija letenja
    }
};

class Sparrow : public Bird {
    // vrabac može da leti, sve u redu
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Struja ne može da leti");
    }
};

Ovde Ostrich krši LSP, jer podklasa ne podržava ponašanje osnovne klase. Bolje je dizajnirati hijerarhiju na drugi način, na primer, izdvojiti interfejs za ptice koje lete.