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.