Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SOLID

 SOLID

Juliana Fernandes

May 27, 2022
Tweet

More Decks by Juliana Fernandes

Other Decks in Technology

Transcript

  1. Juliana Fernandes ➔ deva cansada(uns 10 anos produzindo bugs) 😂

    ➔ curiosa, viajante & mochileira 🌎 ➔ devops(SRE) ~ QA ~ líder técnica(TL) 📚
  2. O que é? Estágio M4U SOLID: 5 princípios chave ➔

    Um conjunto de princípios usados no desenvolvimento de aplicações orientadas a objeto ➔ O nome é um acrônimo para 5 princípios chave ➔ Criado por Michael Feathers, após observar que cinco princípios da orientação a objetos e design de código — Criados por Robert C. Martin (Uncle Bob) e abordados no artigo The Principles of OOD — poderiam se encaixar nesta palavra
  3. Pra que serve? Estágio M4U SOLID: 5 princípios chave ➔

    Fácil de mudar ➔ Flexível e extensível ➔ Testável ➔ Reutilizável ➔ Evitando repetição desnecessária ➔ Fácil de fazer a coisa “certa”
  4. SRP — Single Responsibility Principle Estágio M4U SOLID: 5 princípios

    chave Princípio da Responsabilidade Única — Uma classe deve ter um, e somente um, motivo para mudar. Uma classe deve ser especializada em um único assunto e possuir apenas uma única responsabilidade.
  5. SRP — Single Responsibility Principle Estágio M4U SOLID: 5 princípios

    chave Este princípio visa separar comportamentos para que, se surgirem bugs como resultado de sua mudança, isso não afete outros comportamentos não relacionados.
  6. OCP — Open-Closed Principle Estágio M4U SOLID: 5 princípios chave

    Princípio Aberto-Fechado — Objetos ou entidades devem estar abertos para extensão, mas fechados para modificação, ou seja, quando novos comportamentos e recursos precisam ser adicionados no software, devemos estender e não alterar o código fonte original.
  7. OCP — Open-Closed Principle Estágio M4U SOLID: 5 princípios chave

    Como adicionamos um novo comportamento sem alterar o código fonte já existente? Separe o comportamento extensível por trás de uma interface, inverta as dependências
  8. OCP — Open-Closed Principle Estágio M4U SOLID: 5 princípios chave

    Este princípio visa estender o comportamento de uma classe sem alterar o comportamento existente dessa classe. Isso evita causar bugs onde quer que a classe esteja sendo usada.
  9. LSP— Liskov Substitution Principle Estágio M4U SOLID: 5 princípios chave

    Princípio da substituição de Liskov — Uma classe derivada deve ser substituível por sua classe base
  10. LSP— Liskov Substitution Principle Estágio M4U SOLID: 5 princípios chave

    Se S é um subtipo de T, então os objetos do tipo T, em um programa, podem ser substituídos pelos objetos de tipo S sem que seja necessário alterar as propriedades deste programa
  11. LSP— Liskov Substitution Principle Estágio M4U SOLID: 5 princípios chave

    Passando como parâmetro tanto a classe pai como a classe derivada e o código continua funcionando da forma esperada.
  12. LSP— Liskov Substitution Principle Estágio M4U SOLID: 5 princípios chave

    Este princípio visa reforçar a consistência para que a classe pai ou sua classe filha possam ser usadas da mesma maneira sem erros.
  13. ISP — Interface Segregation Principle Estágio M4U SOLID: 5 princípios

    chave Princípio da Segregação da Interface — Uma classe não deve ser forçada a implementar interfaces e métodos que não irão utilizar. Esse princípio basicamente diz que é melhor criar interfaces mais específicas ao invés de termos uma única interface genérica.
  14. ISP — Interface Segregation Principle Estágio M4U SOLID: 5 princípios

    chave Ao criar a interface Aves, atribuímos comportamentos genéricos e isso acabou forçando a classe Pinguim a implementar o método setAltitude() do qual ela não deveria ter, pois pinguins não voam!
  15. ISP — Interface Segregation Principle Estágio M4U SOLID: 5 princípios

    chave Este princípio visa dividir um conjunto de ações em conjuntos menores, de forma que uma Classe irá executar SOMENTE o conjunto de ações que ela necessita.
  16. DIP — Dependency Inversion Principle Estágio M4U SOLID: 5 princípios

    chave Princípio da Inversão de Dependência — Dependa de abstrações e não de implementações. 1. Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender da abstração. 2. Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações.
  17. DIP — Dependency Inversion Principle Estágio M4U SOLID: 5 princípios

    chave Agora a classe PasswordReminder não tem a mínima ideia de qual banco de dados a aplicação irá utilizar. As classes estão desacopladas e dependendo de uma abstração. Favorecendo a reusabilidade do código e como “bônus” respeitando o SRP e o OCP.
  18. DIP — Dependency Inversion Principle Estágio M4U SOLID: 5 princípios

    chave Este princípio visa reduzir a dependência de uma classe de alto nível na classe de baixo nível, introduzindo uma interface.
  19. SOLID Utilizando os princípios SOLID é possível evitar problemas muito

    comuns: ➔ 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 alguma mudança Estágio M4U SOLID: 5 princípios chave
  20. ➔ Clean Code – Uncle Bob ➔ SOLID ➔ SOLID

    principles in PHP ➔ SOLID Class design ➔ Design Principles and Design Patterns ➔ SOLID Design Principles ➔ https://www.youtube.com/watch?v= zHiWqnTWsn4 (a partir dos 12:00) ➔ https://www.youtube.com/watch?v= rtmFCcjEgEw ➔ Princípios para um melhor design de código Para aprender mais Referências Estágio M4U SOLID: 5 princípios chave