SOLID ?

Repositório para estudos dos 5 princípios conhecidos como SOLID.

O que é SOLID?

SOLID é um acrônimo dos cinco primeiros princípios da programação orientada a objetos e design de código identificados por Robert C. Martin (também conhecido como Uncle Bob) por volta do ano 2000. O acrônimo SOLID foi introduzido por Michael Feathers, após observar que os cinco princípios poderiam se encaixar nesta palavra.

  • S – SRP – Single Responsability Principle (Princípio da responsabilidade única)
  • O – OCP – Open-Closed Principle (Princípio Aberto-Fechado)
  • L – LSP – Liskov Substituition Principle (Princípio de substituição do Liskov)
  • I – ISP – Interface Segregation Principle (Princípio da Segregação da Interface)
  • D – DIP – Dependency Inversion Principle (Princípio da inversão da dependência)

SRP – Single Responsability Principle ✨

Uma classe deve ter um, e somente um, motivo para existir.

OCP – Open-Closed Principle ✨

Você deve ser capaz de estender um comportamento de uma classe, sem modificá-lo.

LSP – Liskov Substituition Principle ✨

As classes bases devem ser substituídas por suas classes derivadas.

ISP – Interface Segregation Principle ✨

Muitas interfaces específicas são melhores do que uma interface única.

DIP – Dependency Inversion Principle ✨

Dependa de uma abstração e não de uma implementação.

? Vantagens da aplicação destes princípios:

  • Seja fácil de manter, adaptar e se ajustar as alterações de escopo.
  • Seja testável e de fácil entendimento.
  • Seja extensível para alterações com o menor esforço necessário.
  • Que forneça o máximo de reaproveitamento.
  • Que permaneça o máximo de tempo possível em utilização.

O que você evita utilizando SOLID:

  • Dificuldade na testabilidade/criação de testes de unidade.
  • Código macarrônico, sem estrutura ou padrão.
  • Dificuldades de isolar funcionalidades.
  • Duplicação de código, uma alteração precisa ser feita em N pontos.
  • Fragilidade, o código quebra facilmente em vários pontos após algumas mudanças.

GitHub

View Github