Sobes.tech
Junior — Middle

Pode explicar o princípio L do SOLID e seu significado no design de código?

sobes.tech IA

Resposta da IA

O princípio L do SOLID é o Princípio de Substituição de Liskov (Liskov Substitution Principle, LSP). Ele afirma que objetos de uma subclasse devem ser intercambiáveis com objetos da classe base sem quebrar a correção do programa.

Simplificando, se a classe B herda de A, em qualquer lugar onde um objeto A seja usado, pode ser substituído por um objeto B, e o programa deve funcionar corretamente, sem alterar seu comportamento.

Valor na concepção:

  • Garante herança e polimorfismo corretos.
  • Ajuda a evitar erros inesperados ao expandir funcionalidades.
  • Promove a criação de arquiteturas flexíveis e escaláveis.

Exemplo em C++:

class Bird {
public:
    virtual void fly() {
        // implementação do voo
    }
};

class Sparrow : public Bird {
    // pardal consegue voar, tudo bem
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("A avestruz não consegue voar");
    }
};

Aqui, Ostrich viola o princípio LSP, pois a subclasse não suporta o comportamento da classe base. É melhor projetar a hierarquia de outra forma, por exemplo, destacando uma interface para aves que voam.