SlideShare uma empresa Scribd logo
1 de 25
SOLID/DRY
Princípios
Vinícius Tonial
Sossella
Oqueé?
Boas práticas de programação
S.O.L.I.D
1- Single resposability
2- Open/Closed
3- Liskov Substitution Principle
4- Interface Segregation
5- Dependency Inversion Principe
PRAQUE?
– Melhorar a manutenção do código com menos esforço.
– Tornar o código mais fácil de entender e testar.
– Melhorar capacidade de reuso.
– Diminuir o acoplamento entre objetos.
CODE SMELLS
Praquallinguagem?
Qualquer linguagem pode se beneficiar destas boas práticas
Tá,MASENAPRÁTICA
What does it mean?
Classes que fazem o que não deveriam fazer
TOO MUCH!
SINGLERESPONSABILITY
SINGLERESPONSABILITY
Classes aberta para extensões, mas fechadas para modificações
OPEN/CLOSE
Whaat?!
OPEN/CLOSE
OPEN/CLOSE
OPEN/CLOSE
VIOLATION
OPEN/CLOSE
liskov
"Se você pode invocar um método q() de uma classe T (base), deve poder também invocar o método q() de uma classe
T'(derivada) que é derivada com herança de T (base).”
liskov
liskov
LISKOV
VIOLATION
QUADRADO
NÃO É
RETÂNGULO
interfacesegregation(SEGREGAÇÃODEINTERFACE)
Segregação?
Separação, Afastamento…
+ Small Interfaces
- Big Interfaces
interfacesegregation(SEGREGAÇÃODEINTERFACE)
interfacesegregation(SEGREGAÇÃODEINTERFACE)
interfacesegregation(SEGREGAÇÃODEINTERFACE)
DEPENDENCYINVERSION
DESACOPLAMENTO
DI = Componentes/Classes devem depender de abstrações/interfaces
DEPENDENCYINVERSION
DEPENDENCYINVERSION
E see…. o construtor das classes de Serviços mudarem? Tpw, receberem parametros?
DEPENDENCYINVERSION
Dependecy Injection, é um design Pattern que prega um
tipo de controle externo de instâncias "Um container, uma
IOC = INVERSION OF CONTROL é um pattern que prega
para usarmos o controle das instâncias de uma determinada
classe ser tratada externamente e não dentro da classe em
questão, ou seja, Inverter o controle de uma classe
DRY
DontRepeatYourSelf
A piece of logic should only be represented once in an application.
Repetition is the root of all software evil.
DRY
Repetition does not only refer to writing the same piece of logic twice in two different places. It also refers
to repetition in your processes – testing, debugging, deployment etc. Repetition in logic is often solved by
abstractions or some common service classes whereas repetition in your process is tackled by
automation. A lot of tedious processes can be automated by concepts from Continuous Integration and
related automation softwarE. Unit testing can be automated by testing tools such as nUnit….
DRY is known by other names as well: Once and Only Once, and Duplication is Evil (DIE).

Mais conteúdo relacionado

Destaque

HRO Today (MSI) - GTM
HRO Today (MSI) - GTMHRO Today (MSI) - GTM
HRO Today (MSI) - GTMymcnulty
 
Las matemáticas que necesitamos
Las matemáticas que necesitamosLas matemáticas que necesitamos
Las matemáticas que necesitamosFernando Reche
 
Clearer cloud computing
Clearer cloud computingClearer cloud computing
Clearer cloud computingJohn Galpin
 
Yo Soy Colombiano
Yo Soy ColombianoYo Soy Colombiano
Yo Soy Colombianoguest65c502
 
HALVA - Kazakhstan loyalty coalition
HALVA - Kazakhstan loyalty coalition HALVA - Kazakhstan loyalty coalition
HALVA - Kazakhstan loyalty coalition Konstantin Gontmakher
 
VeloCity 2016 Taipei, Taiwan - Katja leyendecker
VeloCity 2016 Taipei, Taiwan - Katja leyendecker VeloCity 2016 Taipei, Taiwan - Katja leyendecker
VeloCity 2016 Taipei, Taiwan - Katja leyendecker Northumbria University
 
1º C de ESO plantando semillas
1º C de ESO plantando semillas1º C de ESO plantando semillas
1º C de ESO plantando semillasranabria
 
ANATOMÍA DE GLÁNDULAS ANEXAS AL TUBO DIGESTIVO
ANATOMÍA DE GLÁNDULAS ANEXAS AL TUBO DIGESTIVO ANATOMÍA DE GLÁNDULAS ANEXAS AL TUBO DIGESTIVO
ANATOMÍA DE GLÁNDULAS ANEXAS AL TUBO DIGESTIVO Mary Aldaz
 
Implementarea 5S - primul pas spre imbunatatirea continua
Implementarea 5S - primul pas spre imbunatatirea continuaImplementarea 5S - primul pas spre imbunatatirea continua
Implementarea 5S - primul pas spre imbunatatirea continuaAdrian Oprea
 
Tipología Religiosa Arquitectónica
 Tipología Religiosa Arquitectónica Tipología Religiosa Arquitectónica
Tipología Religiosa ArquitectónicaM.A. Regina Montoya
 
Банкротство. Как пройти процедуру банкротства в России?
Банкротство. Как пройти процедуру банкротства в России?Банкротство. Как пройти процедуру банкротства в России?
Банкротство. Как пройти процедуру банкротства в России?"Арбитраж.ру"
 

Destaque (15)

Aspectos
AspectosAspectos
Aspectos
 
HRO Today (MSI) - GTM
HRO Today (MSI) - GTMHRO Today (MSI) - GTM
HRO Today (MSI) - GTM
 
Skyscrapers & slums
Skyscrapers & slumsSkyscrapers & slums
Skyscrapers & slums
 
Las matemáticas que necesitamos
Las matemáticas que necesitamosLas matemáticas que necesitamos
Las matemáticas que necesitamos
 
Clearer cloud computing
Clearer cloud computingClearer cloud computing
Clearer cloud computing
 
Yo Soy Colombiano
Yo Soy ColombianoYo Soy Colombiano
Yo Soy Colombiano
 
HALVA - Kazakhstan loyalty coalition
HALVA - Kazakhstan loyalty coalition HALVA - Kazakhstan loyalty coalition
HALVA - Kazakhstan loyalty coalition
 
VeloCity 2016 Taipei, Taiwan - Katja leyendecker
VeloCity 2016 Taipei, Taiwan - Katja leyendecker VeloCity 2016 Taipei, Taiwan - Katja leyendecker
VeloCity 2016 Taipei, Taiwan - Katja leyendecker
 
About me
About meAbout me
About me
 
1º C de ESO plantando semillas
1º C de ESO plantando semillas1º C de ESO plantando semillas
1º C de ESO plantando semillas
 
HUM40-Podcast-F11-W3
HUM40-Podcast-F11-W3HUM40-Podcast-F11-W3
HUM40-Podcast-F11-W3
 
ANATOMÍA DE GLÁNDULAS ANEXAS AL TUBO DIGESTIVO
ANATOMÍA DE GLÁNDULAS ANEXAS AL TUBO DIGESTIVO ANATOMÍA DE GLÁNDULAS ANEXAS AL TUBO DIGESTIVO
ANATOMÍA DE GLÁNDULAS ANEXAS AL TUBO DIGESTIVO
 
Implementarea 5S - primul pas spre imbunatatirea continua
Implementarea 5S - primul pas spre imbunatatirea continuaImplementarea 5S - primul pas spre imbunatatirea continua
Implementarea 5S - primul pas spre imbunatatirea continua
 
Tipología Religiosa Arquitectónica
 Tipología Religiosa Arquitectónica Tipología Religiosa Arquitectónica
Tipología Religiosa Arquitectónica
 
Банкротство. Как пройти процедуру банкротства в России?
Банкротство. Как пройти процедуру банкротства в России?Банкротство. Как пройти процедуру банкротства в России?
Банкротство. Как пройти процедуру банкротства в России?
 

Semelhante a SOLID / DRY

Test driven development
Test driven developmentTest driven development
Test driven developmentclauvane1708
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: ClassesInael Rodrigues
 
SOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoSOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoAlberto Monteiro
 
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Klederson Bueno
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilBruno Eustáquio
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova Rogério Cardoso
 
boas praticas
boas praticasboas praticas
boas praticaslcbj
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 

Semelhante a SOLID / DRY (20)

Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: Classes
 
SOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoSOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objeto
 
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software Ágil
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Testes - Para que?
Testes - Para que?Testes - Para que?
Testes - Para que?
 
Refatoração
RefatoraçãoRefatoração
Refatoração
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova
 
Debugging node
Debugging nodeDebugging node
Debugging node
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
boas praticas
boas praticasboas praticas
boas praticas
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 

SOLID / DRY