Sobes.tech
Junior — Middle
118

Můžete vysvětlit princip L ze SOLID a jeho význam při návrhu kódu?

Společnosti byly požádány
РедСофт

Odpověď od AI

sobes.tech AI

Princip L z SOLID je princip náhrady Liskov (Liskov Substitution Principle, LSP). Říká, že objekty podtřídy by měly být zaměnitelné s objekty základní třídy bez narušení správnosti programu.

Jednoduše řečeno, pokud třída B dědí od třídy A, všude, kde je používán objekt A, může být nahrazen objektem B a program by měl správně fungovat, aniž by se změnilo jeho chování.

Hodnota při návrhu:

  • Zajišťuje správné dědění a polymorfismus.
  • Pomáhá předcházet neočekávaným chybám při rozšiřování funkcionality.
  • Podporuje tvorbu flexibilních a rozšiřitelných architektur.

Příklad v C++:

class Bird {
public:
    virtual void fly() {
        // implementace letu
    }
};

class Sparrow : public Bird {
    // vrabec umí létat, vše v pořádku
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Pštros neumí létat");
    }
};

Zde Ostrich porušuje princip LSP, protože podtřída nepodporuje chování základní třídy. Je lepší navrhnout hierarchii jinak, například vyčleněním rozhraní pro létající ptáky.