Sobes.tech
Junior — Middle

Môžete vysvetliť princíp L zo SOLID a jeho význam pri navrhovaní kódu?

sobes.tech AI

Odpoveď od AI

Princíp L zo SOLID je Princíp náhrady Liskov (Liskov Substitution Principle, LSP). Hovorí, že objekty podtriedy by mali byť zameniteľné s objektmi základnej triedy bez narušenia správnosti programu.

Jednoducho povedané, ak trieda B dedí od triedy A, všade, kde sa používa objekt A, môže byť nahradený objektom B a program by mal správne fungovať, bez zmeny správania.

Hodnota pri navrhovaní:

  • Zabezpečuje správne dedičstvo a polymorfizmus.
  • Pomáha predchádzať neočakávaným chybám pri rozširovaní funkčnosti.
  • Podporuje tvorbu flexibilných a rozšíriteľných architektúr.

Príklad v C++:

class Bird {
public:
    virtual void fly() {
        // implementácia letu
    }
};

class Sparrow : public Bird {
    // vrabec môže lietať, všetko v poriadku
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Pštros nemôže lietať");
    }
};

Tu Ostrich porušuje princíp LSP, pretože podtrieda nepodporuje správanie základnej triedy. Je lepšie navrhnúť hierarchiu inak, napríklad vyčlenením rozhrania pre lietajúce vtáky.