SlideShare a Scribd company logo
1 of 41
Download to read offline
Desenvolvendo Aplicações SOLID
Por Charlin Agramonte y Rendy Del Rosario
NOME DA TRILHA
Desarrollando Aplicaciones SOLID
Mini-Biografia
Charlin Agramonte Rendy Del Rosario
charlin@crossgeeks.com
@chard003
xamgirl.com
rendy@crossgeeks.com
@rdelrosario
xamboy.com
ATENÇÃO:
ESTA PALESTRA ESTÁ SENDO GRAVADA E SERÁ DISPONIBILIZADA
PARA OS INSCRITOS QUE TENHAM DIREITO A ACESSAR O CONTEÚDO
POSTERIORMENTE.
EXCEPCIONALMENTE O CONTEÚDO GRAVADO TAMBÉM PODERÁ SER
DISPONIBILIZADO EM OUTRAS PLATAFORMAS PÚBLICAS, INCLUINDO
SITES DE STREAMING.
PERGUNTAS ESCRITAS, PARTICIPAÇÕES FALADAS OU CÂMERAS
ABERTAS PODERÃO SER CAPTURADAS.
AO REALIZAR QUAISQUER DAS AÇÕES ACIMA, VOCÊ AUTORIZA
TACITAMENTE A CAPTURA DOS DADOS CITADOS.
NOSSOS
PATROCINADORES_
Agradecemos a confiança e o investimento realizado pelos Patrocinadores
do MVPConf LATAM 2020.
Sem a participação deles o evento não aconteceria.
Nosso muito obrigado!!!
SINGLE RESPONSIBILITY OPEN CLOSE LISKOV SUBSTITUTION INTERFACE SEGREGATION DEPENDENCY INVERSION
S - Single Responsibility
(SRP)
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Uma classe deve ter apenas um motivo para mudar.
Una clase debe tener solo una razón para cambiar.
Exemplo 1
Exemplo 2
1. Guardar
2. Mostrar Log
3. Persistir data
1. Guardar
2. Mostrar Log
3. Persistir data
O - Open-Closed
(OCP)
Uma classe deve ser aberta para extensão e fechada para modificação.
Una clase debe estar abierta para extensión y cerrada para modificación.
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Exemplo 1
Exemplo 2
L - Liskov Substitution
(LSP)
. Uma classe filha deve ser capaz de substituir um objeto da classe Pai sem trazer erros ao sistema ou modificar o comportamento da classe base.
Una clase hijo debería poder reemplazar un objeto de la clase Padre sin traer errores en el sistema o modificar el comportamiento de la clase base.
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Exemplo 1
Exemplo 2
Exemplo 2
El SumCalculator pierde su comportamiento original
O SumCalculator perde seu comportamento original
Exemplo 2
I - Interface Segregation
(ISP)
Os clientes não devem ser forçados a confiar em interfaces que não usam.
No se debe obligar a los clientes a depender de interfaces que no utilicen.
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Exemplo 1
Exemplo 2
D - Dependency Inversion
(DIP)
Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações.
Los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deberían depender de abstracciones.
https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
Exemplo 1
Exemplo 2
¿Como podemos
identificar que não está
sendo cumprido SOLID?
EM DESTAQUE_
¿Como podemos identificar que no se esta cumpliendo SOLID?
1. Se houver métodos definidos que não
correspondam ao objetivo da classe
Si hay métodos definidos que no corresponden con el propósito de la clase
2. Condições if muito longas
Condiciones If muy largas
3. Transmitindo para uma legenda
Castear a un subtitpo
4. Muitos métodos públicos
Muchos métodos públicos
5. Implementar métodos que lançam
UnsupportedOperationException
Implementar metodos que lancen UnsupportedOperationException
Dicas finais
EM DESTAQUE_
Tips finales
Especifique o nível de acesso correto
Especifique el nivel de acceso correcto
Expectativa
Realidade
A imutabilidade é sua amiga
La inmutabilidad es tu amiga
Marcar como somente leitura o que é somente leitura: V
Marcar solo lectura lo que es solo lectura :V
Marcar las clases que no se deben extender como SEALED
Marcar las clases que no se deben extender como SEALED
Charlin Agramonte
Rendy Del Rosario
charlin@crossgeeks.com
@chard003
xamgirl.com
rendy@crossgeeks.com
@rdelrosario
xamboy.com
Questões
Preguntas
OBRIGADO!

More Related Content

More from Charlin Agramonte

Como prepararse y conseguir trabajo como Mobile Developer
Como prepararse y conseguir trabajo como Mobile DeveloperComo prepararse y conseguir trabajo como Mobile Developer
Como prepararse y conseguir trabajo como Mobile DeveloperCharlin Agramonte
 
Desarrollando apps multi plataformas con xamarin forms
Desarrollando apps multi plataformas con xamarin formsDesarrollando apps multi plataformas con xamarin forms
Desarrollando apps multi plataformas con xamarin formsCharlin Agramonte
 
C#good practices in 10 minutes
C#good practices in 10 minutesC#good practices in 10 minutes
C#good practices in 10 minutesCharlin Agramonte
 
Xamarin Forms Best Practices
Xamarin Forms Best PracticesXamarin Forms Best Practices
Xamarin Forms Best PracticesCharlin Agramonte
 
Why xamarin forms is awesome
Why xamarin forms is awesomeWhy xamarin forms is awesome
Why xamarin forms is awesomeCharlin Agramonte
 
Prism in xamarin forms from zero to hero
Prism in xamarin forms from zero to hero Prism in xamarin forms from zero to hero
Prism in xamarin forms from zero to hero Charlin Agramonte
 
Xamarin forms from zero to hero
Xamarin forms from zero to heroXamarin forms from zero to hero
Xamarin forms from zero to heroCharlin Agramonte
 
Getting started with xamarin forms
Getting started with xamarin formsGetting started with xamarin forms
Getting started with xamarin formsCharlin Agramonte
 
Xamarin Workshop Noob to Master – Week 6
Xamarin Workshop Noob to Master – Week 6Xamarin Workshop Noob to Master – Week 6
Xamarin Workshop Noob to Master – Week 6Charlin Agramonte
 
Xamarin Workshop Noob to Master – Week 5
Xamarin Workshop Noob to Master – Week 5Xamarin Workshop Noob to Master – Week 5
Xamarin Workshop Noob to Master – Week 5Charlin Agramonte
 
Xamarin Workshop Noob to Master – Week 4
Xamarin Workshop Noob to Master – Week 4Xamarin Workshop Noob to Master – Week 4
Xamarin Workshop Noob to Master – Week 4Charlin Agramonte
 
Xamarin Workshop Noob to Master - Week 3
Xamarin Workshop Noob to Master - Week 3Xamarin Workshop Noob to Master - Week 3
Xamarin Workshop Noob to Master - Week 3Charlin Agramonte
 
Xamarin Forms - Noob to master - Week 2
Xamarin Forms - Noob to master - Week 2Xamarin Forms - Noob to master - Week 2
Xamarin Forms - Noob to master - Week 2Charlin Agramonte
 
Xamarin Forms - Noob to master - Week 1
Xamarin Forms - Noob to master - Week 1 Xamarin Forms - Noob to master - Week 1
Xamarin Forms - Noob to master - Week 1 Charlin Agramonte
 
Why xamarin forms is awesome
Why xamarin forms is awesomeWhy xamarin forms is awesome
Why xamarin forms is awesomeCharlin Agramonte
 

More from Charlin Agramonte (20)

C# Best Practices
C# Best PracticesC# Best Practices
C# Best Practices
 
Como prepararse y conseguir trabajo como Mobile Developer
Como prepararse y conseguir trabajo como Mobile DeveloperComo prepararse y conseguir trabajo como Mobile Developer
Como prepararse y conseguir trabajo como Mobile Developer
 
Desarrollando apps multi plataformas con xamarin forms
Desarrollando apps multi plataformas con xamarin formsDesarrollando apps multi plataformas con xamarin forms
Desarrollando apps multi plataformas con xamarin forms
 
C#good practices in 10 minutes
C#good practices in 10 minutesC#good practices in 10 minutes
C#good practices in 10 minutes
 
Xamarin Forms Best Practices
Xamarin Forms Best PracticesXamarin Forms Best Practices
Xamarin Forms Best Practices
 
Xamarin Forms Evolution
Xamarin Forms EvolutionXamarin Forms Evolution
Xamarin Forms Evolution
 
Why xamarin forms is awesome
Why xamarin forms is awesomeWhy xamarin forms is awesome
Why xamarin forms is awesome
 
Visual studio 2019 launch
Visual studio 2019 launch Visual studio 2019 launch
Visual studio 2019 launch
 
Prism in xamarin forms from zero to hero
Prism in xamarin forms from zero to hero Prism in xamarin forms from zero to hero
Prism in xamarin forms from zero to hero
 
Xamarin forms - overcloud
Xamarin forms - overcloudXamarin forms - overcloud
Xamarin forms - overcloud
 
Xamarin forms from zero to hero
Xamarin forms from zero to heroXamarin forms from zero to hero
Xamarin forms from zero to hero
 
Xaml tips and tricks
Xaml tips and tricksXaml tips and tricks
Xaml tips and tricks
 
Getting started with xamarin forms
Getting started with xamarin formsGetting started with xamarin forms
Getting started with xamarin forms
 
Xamarin Workshop Noob to Master – Week 6
Xamarin Workshop Noob to Master – Week 6Xamarin Workshop Noob to Master – Week 6
Xamarin Workshop Noob to Master – Week 6
 
Xamarin Workshop Noob to Master – Week 5
Xamarin Workshop Noob to Master – Week 5Xamarin Workshop Noob to Master – Week 5
Xamarin Workshop Noob to Master – Week 5
 
Xamarin Workshop Noob to Master – Week 4
Xamarin Workshop Noob to Master – Week 4Xamarin Workshop Noob to Master – Week 4
Xamarin Workshop Noob to Master – Week 4
 
Xamarin Workshop Noob to Master - Week 3
Xamarin Workshop Noob to Master - Week 3Xamarin Workshop Noob to Master - Week 3
Xamarin Workshop Noob to Master - Week 3
 
Xamarin Forms - Noob to master - Week 2
Xamarin Forms - Noob to master - Week 2Xamarin Forms - Noob to master - Week 2
Xamarin Forms - Noob to master - Week 2
 
Xamarin Forms - Noob to master - Week 1
Xamarin Forms - Noob to master - Week 1 Xamarin Forms - Noob to master - Week 1
Xamarin Forms - Noob to master - Week 1
 
Why xamarin forms is awesome
Why xamarin forms is awesomeWhy xamarin forms is awesome
Why xamarin forms is awesome
 

Desenvolvendo Aplicações SOLID