SlideShare uma empresa Scribd logo
1 de 22
- Solid
São cinco princípios da programação orientada a objetos que facilitam no desenvolvimento de
softwares, tornando-os fáceis de manter e estender. Esses princípios podem ser aplicados a
qualquer linguagem de POO.
SRP Single Responsiblity
1- Uma classe deve ter uma, e somente uma responsabilidade.
2- Uma classe nunca deve ter a responsabilidade de outra classe.
3- Toda classe deve ter um inicio e fim conhecido.
4- A responsabilidade deve estar totalmente encapsulada na respectiva classe.
* Tudo que não for de uso publico deve ser obrigatoriamente mantido em segredo dentro da classe.
* Uso de GET e SET para retorno e atribuição de valores.
5- Onde se tem muita generalização não é possível ter especialização.
Codigo SRP
Codigo violando o principio Codigo respeitando o principio
OCP Open/ Closed
O codigo deve ser aberto para extensão, mas fechado para alteração.
* Atualizar ou adcionar algo a um codigo existente é uma alteração e fazer isto sem modificar um
codigo existente é extender.
* Respeitamos estes principios utilizando interfaces e classes abstratas, assim elas não são
alteradas apenas extendidas.
Codigo OCP
LSP Liskov Substitution
Este principio diz que a subclasse não pode quebrar o comportamento da classe mãe e a
classe filho deve poder ser substituida pela classe mãe sem alterar a mãe seja ela uma
interface, classe ou classe abstrata.
●Ex:
● Note que as subclasses são do tipo Cliente herdaram e sobrescreveram seu metodo
mantendo o comportamento sem necessidade de alterar a classe mãe.
ISP Interface Segregation
Varias interfaces especificas são melhor do que uma interface generica.
Se refere a não criar uma interface com muitas funcionalidades e sim varias com funções bem
definidas em cada uma facilitando a implementação de seus metodos em novoa clienres.
DIP Dependency Inversion
●Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem
depender de abstrações.
●Inverter a dependencia faz com que ao invés da classe A se referir diretamente a classe
B ambas se refiram a abstrações isto diminui a dependencia entre elas e possibilita a
reutilização dos componentes.
- Codigo DIP
- Dry
●Oque é: Um principio que faz referencia ao polimorfismo para
evitar duplicações de codigo.
●Para que serve: Reduzir duplicações, facilitar a manutenção,
trazes um codigo mais legivel.
- Codigo Dry
- Kiss
●Oque é: Um principio que busca a maior simplicidade possível para um codigo.
●Para que serve: O objetivo é tornar o codigo o mais simples possível, trazendo um
codigo limpo, facil de manter e entender .
●Dicas: Primeiro resolva o problema, então depois codifique, cada método não deve ter
mais que 30-40 linhas de código, cada método deve resolver apenas um pequeno
problema.
- Codigo Kiss
●Complexidade
●Implementando o principio Chamada do metodo
- Builder
●Oque é: É um padrão onde em vez de passar os argumentos
diretamente a Classe x nós chamamos e passamos os
argumentos para métodos do Builder e eles retornam estes
dados para a classe x.
●Praque serve: Torna o codigo legivel apesar de ficar um
pouco mais complexo.
- Builder Codigo
- Singleton
●Oque é: Um padrão para instanciar uma classe apenas uma vez
●Para que serve: Serve para garantir que apenas uma instanciação da
classe vai ser feita em toda aplicação, seria muito util na conecxão
com o banco de dados.
- Codigo Singleton
Best Practices
●Identificação dos Recursos: cada recurso deve possuir uma identificação única, que
deve ser informada nas requisições.
●Ex:
●http://minhaapi.com.br/produtos
●http://minhaapi.com.br/clientes
●http://minhaapi.com.br/vendas
●Utilizar URIs ligíveis: devemos usar nomes legiveis que sejam faceis para deduzir e
que sejam relacionados com a aplicação.
●Utilizar um Padrão de URI na identificação dos recursos: Estabelecer um padrão
para nomear as URIS dos recursos e mantelo, para evitar falta de consistencia como esta:
● http://minhaapi.com.br/produto (Singular)
● http://minhaapi.com.br/clientes (Plural)
● Não colocar na URI a operação que vai fazer no recurso: A manipulação dos
recursos deve ser feita utilizando os metodos http.
●http://minhaapi.com.br/produtos/cadastrar
●http://minhaapi.com.br/clientes/excluir
●http://minhaapi.com.br/vendas/atualizar
●Não colocar na URI o formato desejado na apresentação do recurso
●http://minhaapi.com.br/produtos/xml;
●http://minhaapi.com.br/clientes/112?formato=json
●Evite alterações nas URI’s: Após definir uma URI e disponibilizar a manipulação de
um recurso por ela, evite ao máximo sua alteração.
●Utilização correta dos códigos HTTP
●Documentação bem definida e simples: Deve conter parametros de entrada e saida
especificados se são obrigatorios ou opcionais, descrição de funcionalidade dos metodos,
formatos de resposta, requerimento de autenticação ou não, especificações de metodos
aceitos pelo endopoint e especificar os codigos de retorno tanto de sucesso quanto de
API Style guide
●Consiste em duas partes a definição de funções e a definição de regras
●Difinição de funções: A função deve retornar true se a validação for aprovada ou uma
sequência que descreva o motivo da falha, se a validação falhar.
●Difinição de Regras: Precisamos garantir que toda a API use a combinação definida de
método de solicitação e código de status de resposta.

Mais conteúdo relacionado

Mais procurados

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Robson Agapito Correa
 
OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoEngenharia de Software Ágil
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfAndreCosta502039
 
Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyJoão Carlos Ottobboni
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015Bruno Murawski
 
Reaproveitamento de código com Generics
Reaproveitamento de código com GenericsReaproveitamento de código com Generics
Reaproveitamento de código com GenericsCristiano Agosti
 
Boas práticas de Testes Automatizados com Junit 4
Boas práticas de Testes Automatizados com Junit 4Boas práticas de Testes Automatizados com Junit 4
Boas práticas de Testes Automatizados com Junit 4Angélica Lima
 

Mais procurados (13)

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.
 
OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechado
 
Design patterns de uma vez por todas
Design patterns de uma vez por todasDesign patterns de uma vez por todas
Design patterns de uma vez por todas
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Impress
ImpressImpress
Impress
 
Impress
ImpressImpress
Impress
 
Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e Strategy
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Durable functionsmvp conf2020
Durable functionsmvp conf2020Durable functionsmvp conf2020
Durable functionsmvp conf2020
 
Reaproveitamento de código com Generics
Reaproveitamento de código com GenericsReaproveitamento de código com Generics
Reaproveitamento de código com Generics
 
Boas práticas de Testes Automatizados com Junit 4
Boas práticas de Testes Automatizados com Junit 4Boas práticas de Testes Automatizados com Junit 4
Boas práticas de Testes Automatizados com Junit 4
 

Semelhante a Apres s4

Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Vinicius Pulgatti
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss DanielChristofolli
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Joao Galdino Mello de Souza
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoBonoBee
 
Apresentação WTM
Apresentação WTMApresentação WTM
Apresentação WTMAnna Cruz
 
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesRuby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesPotiLivre Sobrenome
 
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindoDe Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindoAnna Cruz
 
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOProgramação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOCarlos Eduardo
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDHélio Medeiros
 
Soujava -construindo_ap_is_com_a_open_api_spec_e_java
Soujava  -construindo_ap_is_com_a_open_api_spec_e_javaSoujava  -construindo_ap_is_com_a_open_api_spec_e_java
Soujava -construindo_ap_is_com_a_open_api_spec_e_javaRaphael Rodrigues
 

Semelhante a Apres s4 (20)

Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do código
 
BDD-NamoroOn
BDD-NamoroOnBDD-NamoroOn
BDD-NamoroOn
 
Apresentação WTM
Apresentação WTMApresentação WTM
Apresentação WTM
 
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesRuby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
 
Ruby on rails como deve ser utilizada e onde
Ruby on rails como deve ser utilizada e ondeRuby on rails como deve ser utilizada e onde
Ruby on rails como deve ser utilizada e onde
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindoDe Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOProgramação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLID
 
Soujava -construindo_ap_is_com_a_open_api_spec_e_java
Soujava  -construindo_ap_is_com_a_open_api_spec_e_javaSoujava  -construindo_ap_is_com_a_open_api_spec_e_java
Soujava -construindo_ap_is_com_a_open_api_spec_e_java
 
Potencializando a qualidade de código
Potencializando a qualidade de códigoPotencializando a qualidade de código
Potencializando a qualidade de código
 

Apres s4

  • 1. - Solid São cinco princípios da programação orientada a objetos que facilitam no desenvolvimento de softwares, tornando-os fáceis de manter e estender. Esses princípios podem ser aplicados a qualquer linguagem de POO.
  • 2. SRP Single Responsiblity 1- Uma classe deve ter uma, e somente uma responsabilidade. 2- Uma classe nunca deve ter a responsabilidade de outra classe. 3- Toda classe deve ter um inicio e fim conhecido. 4- A responsabilidade deve estar totalmente encapsulada na respectiva classe. * Tudo que não for de uso publico deve ser obrigatoriamente mantido em segredo dentro da classe. * Uso de GET e SET para retorno e atribuição de valores. 5- Onde se tem muita generalização não é possível ter especialização.
  • 3. Codigo SRP Codigo violando o principio Codigo respeitando o principio
  • 4. OCP Open/ Closed O codigo deve ser aberto para extensão, mas fechado para alteração. * Atualizar ou adcionar algo a um codigo existente é uma alteração e fazer isto sem modificar um codigo existente é extender. * Respeitamos estes principios utilizando interfaces e classes abstratas, assim elas não são alteradas apenas extendidas.
  • 6. LSP Liskov Substitution Este principio diz que a subclasse não pode quebrar o comportamento da classe mãe e a classe filho deve poder ser substituida pela classe mãe sem alterar a mãe seja ela uma interface, classe ou classe abstrata. ●Ex: ● Note que as subclasses são do tipo Cliente herdaram e sobrescreveram seu metodo mantendo o comportamento sem necessidade de alterar a classe mãe.
  • 7. ISP Interface Segregation Varias interfaces especificas são melhor do que uma interface generica. Se refere a não criar uma interface com muitas funcionalidades e sim varias com funções bem definidas em cada uma facilitando a implementação de seus metodos em novoa clienres.
  • 8. DIP Dependency Inversion ●Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações. ●Inverter a dependencia faz com que ao invés da classe A se referir diretamente a classe B ambas se refiram a abstrações isto diminui a dependencia entre elas e possibilita a reutilização dos componentes.
  • 10. - Dry ●Oque é: Um principio que faz referencia ao polimorfismo para evitar duplicações de codigo. ●Para que serve: Reduzir duplicações, facilitar a manutenção, trazes um codigo mais legivel.
  • 12. - Kiss ●Oque é: Um principio que busca a maior simplicidade possível para um codigo. ●Para que serve: O objetivo é tornar o codigo o mais simples possível, trazendo um codigo limpo, facil de manter e entender . ●Dicas: Primeiro resolva o problema, então depois codifique, cada método não deve ter mais que 30-40 linhas de código, cada método deve resolver apenas um pequeno problema.
  • 13. - Codigo Kiss ●Complexidade ●Implementando o principio Chamada do metodo
  • 14. - Builder ●Oque é: É um padrão onde em vez de passar os argumentos diretamente a Classe x nós chamamos e passamos os argumentos para métodos do Builder e eles retornam estes dados para a classe x. ●Praque serve: Torna o codigo legivel apesar de ficar um pouco mais complexo.
  • 16. - Singleton ●Oque é: Um padrão para instanciar uma classe apenas uma vez ●Para que serve: Serve para garantir que apenas uma instanciação da classe vai ser feita em toda aplicação, seria muito util na conecxão com o banco de dados.
  • 18. Best Practices ●Identificação dos Recursos: cada recurso deve possuir uma identificação única, que deve ser informada nas requisições. ●Ex: ●http://minhaapi.com.br/produtos ●http://minhaapi.com.br/clientes ●http://minhaapi.com.br/vendas
  • 19. ●Utilizar URIs ligíveis: devemos usar nomes legiveis que sejam faceis para deduzir e que sejam relacionados com a aplicação. ●Utilizar um Padrão de URI na identificação dos recursos: Estabelecer um padrão para nomear as URIS dos recursos e mantelo, para evitar falta de consistencia como esta: ● http://minhaapi.com.br/produto (Singular) ● http://minhaapi.com.br/clientes (Plural)
  • 20. ● Não colocar na URI a operação que vai fazer no recurso: A manipulação dos recursos deve ser feita utilizando os metodos http. ●http://minhaapi.com.br/produtos/cadastrar ●http://minhaapi.com.br/clientes/excluir ●http://minhaapi.com.br/vendas/atualizar
  • 21. ●Não colocar na URI o formato desejado na apresentação do recurso ●http://minhaapi.com.br/produtos/xml; ●http://minhaapi.com.br/clientes/112?formato=json ●Evite alterações nas URI’s: Após definir uma URI e disponibilizar a manipulação de um recurso por ela, evite ao máximo sua alteração. ●Utilização correta dos códigos HTTP ●Documentação bem definida e simples: Deve conter parametros de entrada e saida especificados se são obrigatorios ou opcionais, descrição de funcionalidade dos metodos, formatos de resposta, requerimento de autenticação ou não, especificações de metodos aceitos pelo endopoint e especificar os codigos de retorno tanto de sucesso quanto de
  • 22. API Style guide ●Consiste em duas partes a definição de funções e a definição de regras ●Difinição de funções: A função deve retornar true se a validação for aprovada ou uma sequência que descreva o motivo da falha, se a validação falhar. ●Difinição de Regras: Precisamos garantir que toda a API use a combinação definida de método de solicitação e código de status de resposta.