Slide 1

Slide 1 text

Acrônimo para 5 princípios chave S.O.L.I.D

Slide 2

Slide 2 text

Juliana Fernandes ➔ deva cansada(uns 10 anos produzindo bugs) 😂 ➔ curiosa, viajante & mochileira 🌎 ➔ devops(SRE) ~ QA ~ líder técnica(TL) 📚

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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”

Slide 5

Slide 5 text

SRP — Single Responsibility Principle

Slide 6

Slide 6 text

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.

Slide 7

Slide 7 text

SRP — Single Responsibility Principle Estágio M4U SOLID: 5 princípios chave

Slide 8

Slide 8 text

SRP — Single Responsibility Principle Estágio M4U SOLID: 5 princípios chave

Slide 9

Slide 9 text

SRP — Single Responsibility Principle Estágio M4U SOLID: 5 princípios chave

Slide 10

Slide 10 text

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.

Slide 11

Slide 11 text

OCP — Open-Closed Principle

Slide 12

Slide 12 text

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.

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

OCP — Open-Closed Principle Estágio M4U SOLID: 5 princípios chave

Slide 15

Slide 15 text

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.

Slide 16

Slide 16 text

LSP— Liskov Substitution Principle

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

LSP— Liskov Substitution Principle Estágio M4U SOLID: 5 princípios chave

Slide 20

Slide 20 text

LSP— Liskov Substitution Principle Estágio M4U SOLID: 5 princípios chave

Slide 21

Slide 21 text

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.

Slide 22

Slide 22 text

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.

Slide 23

Slide 23 text

ISP — Interface Segregation Principle

Slide 24

Slide 24 text

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.

Slide 25

Slide 25 text

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!

Slide 26

Slide 26 text

ISP — Interface Segregation Principle Estágio M4U SOLID: 5 princípios chave

Slide 27

Slide 27 text

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.

Slide 28

Slide 28 text

DIP — Dependency Inversion Principle

Slide 29

Slide 29 text

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.

Slide 30

Slide 30 text

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.

Slide 31

Slide 31 text

DIP — Dependency Inversion Principle Estágio M4U SOLID: 5 princípios chave

Slide 32

Slide 32 text

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.

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

➔ 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

Slide 35

Slide 35 text

Obrigada! juliana.fernandes@m4u.com.br