Junior — Middle
Meg tudod magyarázni a SOLID L elvét és annak jelentőségét a kód tervezésében?
sobes.tech MI
Válasz az MI-től
A SOLID L elve a Liskov-helyettesítési elv (Liskov Substitution Principle, LSP). Ez kimondja, hogy az alosztály objektumai helyettesíthetik a bázisosztály objektumait anélkül, hogy a program helyességét megsértenék.
Egyszerűbben fogalmazva, ha az B osztály öröklődik az A osztályból, akkor bárhol, ahol A objektumot használnak, helyettesíthető B objektummal, és a programnak helyesen kell működnie, anélkül, hogy viselkedését megváltoztatná.
Tervezésnél érték:
- Biztosítja a helyes öröklődést és polimorfizmust.
- Segít elkerülni a váratlan hibákat a funkcionalitás bővítésekor.
- Elősegíti rugalmas és bővíthető architektúrák kialakítását.
C++ példával:
class Bird {
public:
virtual void fly() {
// repülés implementáció
}
};
class Sparrow : public Bird {
// veréb tud repülni, minden rendben
};
class Ostrich : public Bird {
public:
void fly() override {
throw std::logic_error("Strucc nem tud repülni");
}
};
Itt az Ostrich megsérti az LSP-t, mivel az alosztály nem támogatja a bázisosztály viselkedését. Jobb másképp tervezni a hierarchiát, például egy repülő madarakra vonatkozó interfészt definiálva.