SOLID a 6 mãos
-
Upload
joao-batista-neto -
Category
Documents
-
view
847 -
download
0
description
Transcript of SOLID a 6 mãos
![Page 1: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/1.jpg)
@augustohp@augustohp
@Ivonascimento@Ivonascimento
@lcobucci@lcobucci
@nelson_senna@nelson_senna
@netojoaobatista@netojoaobatista
@guilhermeblanco@guilhermeblanco
S.O.L.I.D.S.O.L.I.D.a 6 mãosa 6 mãos
![Page 2: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/2.jpg)
Sólido, mas não engessadoSólido, mas não engessado
Código engessado apodrece e cheira mal.
![Page 3: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/3.jpg)
Sólido, mas não engessadoSólido, mas não engessado
Como evitar o apodrecimentodo código?
![Page 4: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/4.jpg)
Sólido, mas não engessadoSólido, mas não engessado
Código S.O.L.I.D. facilita a manutenção
mudanças não quebram o código
é reutilizável e reaproveitável
![Page 5: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/5.jpg)
Sólido, mas não engessadoSólido, mas não engessado
E como meu código pode
ser S.O.L.I.D.?
![Page 6: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/6.jpg)
S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única
O primeiro passo,
é compreender responsabilidade.
![Page 7: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/7.jpg)
S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única
Responsabilidade única, por quê?
![Page 8: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/8.jpg)
S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única
Okay, tenho apenas uma
responsabilidade.
E agora?
![Page 9: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/9.jpg)
S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única
Seu código ainda fede;
Muito!
![Page 10: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/10.jpg)
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Agora você é proibido de
editar seu código.
![Page 11: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/11.jpg)
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Aberto e fechado?!
Não é antagônico?
![Page 12: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/12.jpg)
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Aberto para extensão;
Fechado para edição.
![Page 13: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/13.jpg)
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
A implementação é irrelevante.
Trabalhe com abstrações.
![Page 14: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/14.jpg)
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Herança pode ser uma solução
para variar o comportamento.
![Page 15: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/15.jpg)
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Herança?!
Eu sei trabalhar com herança!
![Page 16: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/16.jpg)
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
class User extends Database {}
![Page 17: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/17.jpg)
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Herança é mais complexo do
que você imagina!
![Page 18: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/18.jpg)
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Se q(x) é uma propriedade
demonstrável dos objetos x de
tipo T. Então q(y) deve ser
verdadeiro para objetos y de tipo
S onde S é um subtipo de T.
![Page 19: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/19.jpg)
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
WTF?!
![Page 20: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/20.jpg)
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Se q(x) é uma propriedade
demonstrável dos objetos x de
tipo T. Então q(y) deve ser
verdadeiro para objetos y de tipo
S onde S é um subtipo de T.
![Page 21: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/21.jpg)
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
E como uso isso?
![Page 22: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/22.jpg)
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Validação de input nunca deve
ser mais forte na derivação, do
que é na classe base.
![Page 23: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/23.jpg)
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Validação do output nunca deve
ser mais fraco na derivação, do
que é na classe base.
![Page 24: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/24.jpg)
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Se não posso editar o código,
como utilizo uma classe
derivada?
![Page 25: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/25.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Trabalhando com abstrações e
invertendo as dependências.
![Page 26: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/26.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Mas o que é dependência?
![Page 27: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/27.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Em vez de criar as instâncias
dentro das classes, devemos
passá-las como parâmetros na
forma de abstrações.
![Page 28: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/28.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Abstração é um conceito.
Uma ideia.
![Page 29: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/29.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Confie na interface das coisas
e não espere conhecer os
detalhes da implementação.
![Page 30: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/30.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Então é só eu criar uma interface
com todos os métodos
possíveis?
![Page 31: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/31.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Esqueceu das
responsabilidades?
![Page 32: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/32.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
É esperado que seus objetos se
comportem de todas as formas
possíveis?
![Page 33: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/33.jpg)
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Então qual a responsabilidade do
seu objeto?
![Page 34: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/34.jpg)
I.S.P. - Princípio da segregação das interfacesI.S.P. - Princípio da segregação das interfaces
Faça com que sua interface deixe
os outros saberem dessa, e
somente dessa,
responsabilidade.
![Page 35: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/35.jpg)
I.S.P. - Princípio da segregação das interfacesI.S.P. - Princípio da segregação das interfaces
Quanto mais coesa for a
interface, mais fácil será sua
reutilização.
![Page 36: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/36.jpg)
Problemas de um mau designProblemas de um mau design
Rigidez
Uma única mudança, implica na
mudança de vários outros
componentes.
![Page 37: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/37.jpg)
Problemas de um mau designProblemas de um mau design
Fragilidade
Quando mudamos alguma coisa,
partes inesperadas da aplicação
quebram.
![Page 38: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/38.jpg)
Problemas de um mau designProblemas de um mau design
Imobilidade
Fica difícil reutilizar o código,
pois fica difícil extrair uma parte
de um todo.
![Page 39: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/39.jpg)
Problemas de um mau designProblemas de um mau design
Há mais maus cheiros entre seus
objetos, do que essa vã
apresentação pode lhe mostrar.
![Page 40: SOLID a 6 mãos](https://reader034.fdocumentos.tips/reader034/viewer/2022052311/559704a61a28ab624f8b4809/html5/thumbnails/40.jpg)
@augustohp@augustohp
@Ivonascimento@Ivonascimento
@lcobucci@lcobucci
@nelson_senna@nelson_senna
@netojoaobatista@netojoaobatista
@guilhermeblanco@guilhermeblanco
Obrigado!Obrigado!