Liskov Substitution Principle
Subtipos devem ser substituíveis por seus tipos base
Se você trocar uma peça, o sistema ainda deve funcionar.
Explicando como se você tivesse 5 anos
Agora sim! 🎉
Se você tem um brinquedo que usa pilhas, qualquer pilha do tamanho certo deve funcionar. Não importa a marca!
Por que isso é uma Red Flag?
Atenção ao problema! ⚡
Violações de LSP causam bugs sutis quando subclasses não se comportam como esperado. O código que funcionava com a classe base quebra misteriosamente com subclasses. Indica herança mal projetada e falta de compreensão de contratos. A oportunidade está em revisar hierarquias de herança e garantir que subclasses realmente podem substituir a base, ou usar composição ao invés de herança.
Para que serve
Garantir que a herança seja usada corretamente, mantendo o comportamento esperado.
Explicação Detalhada
O Princípio da Substituição de Liskov afirma que objetos de uma classe base devem ser substituíveis por objetos de suas subclasses sem quebrar o programa. Isso significa que subclasses devem respeitar o contrato da classe base: mesmas pré-condições (ou mais fracas), mesmas pós-condições (ou mais fortes), e mesmas invariantes. Exemplo de violação: uma classe Square que herda de Rectangle e quebra a expectativa de que largura e altura são independentes.
História
Barbara Liskov apresentou este conceito em uma conferência. Ela percebeu que a herança só faz sentido quando o subtipo pode realmente substituir o tipo base sem quebrar o programa.
Quem Inventou
Barbara Liskov
Ano: 1987
Compartilhar
Explicando como se você tivesse 5 anos
Agora sim! 🎉
Se você tem um brinquedo que usa pilhas, qualquer pilha do tamanho certo deve funcionar. Não importa a marca!
Por que isso é uma Red Flag?
Atenção ao problema! ⚡
Violações de LSP causam bugs sutis quando subclasses não se comportam como esperado. O código que funcionava com a classe base quebra misteriosamente com subclasses. Indica herança mal projetada e falta de compreensão de contratos. A oportunidade está em revisar hierarquias de herança e garantir que subclasses realmente podem substituir a base, ou usar composição ao invés de herança.
História
Barbara Liskov apresentou este conceito em uma conferência. Ela percebeu que a herança só faz sentido quando o subtipo pode realmente substituir o tipo base sem quebrar o programa.
Quem Inventou
Barbara Liskov
Ano: 1987
Para que serve
Garantir que a herança seja usada corretamente, mantendo o comportamento esperado.
Explicação Detalhada
O Princípio da Substituição de Liskov afirma que objetos de uma classe base devem ser substituíveis por objetos de suas subclasses sem quebrar o programa. Isso significa que subclasses devem respeitar o contrato da classe base: mesmas pré-condições (ou mais fracas), mesmas pós-condições (ou mais fortes), e mesmas invariantes. Exemplo de violação: uma classe Square que herda de Rectangle e quebra a expectativa de que largura e altura são independentes.
Heurísticas Relacionadas
Fontes e Referências
Quer se aprofundar? Confira essas fontes oficiais: