- 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

PPTX
Estudos Technocorp
PDF
Código limpo: Limites
PDF
Gerenciando aspectos e eventos com Zend Framework 2
ODP
Trabalhando com eventos e serviços no Zend Framework 2
PPTX
Desenvolvimento orientado a objetos com adianti framework
PPTX
Impacto dos frameworks PHP
PPTX
Testes unitários como ferramentas de design de código
PDF
Depurando aplicações PHP like a BOSS
Estudos Technocorp
Código limpo: Limites
Gerenciando aspectos e eventos com Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2
Desenvolvimento orientado a objetos com adianti framework
Impacto dos frameworks PHP
Testes unitários como ferramentas de design de código
Depurando aplicações PHP like a BOSS

Mais procurados (13)

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

Semelhante a Apres s4 (20)

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

Último (19)

PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
SEMINÁRIO DE IHC - A interface Homem-Máquina
PDF
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PPT
Aula de Engenharia de Software principais caracteristicas
PDF
Banco de Dados 2atualização de Banco de d
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PPTX
Aula 7 - Listas em Python (Introdução à Ciencia da Computação)
PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Jira Software projetos completos com scrum
PPTX
ccursoammaiacursoammaiacursoammaia123456
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
Processos no SAP Extended Warehouse Management, EWM100 Col26
Analise Estatica de Compiladores para criar uma nova LP
Conceitos básicos de Redes Neurais Artificiais
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
SEMINÁRIO DE IHC - A interface Homem-Máquina
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
Aula de Engenharia de Software principais caracteristicas
Banco de Dados 2atualização de Banco de d
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Aula 7 - Listas em Python (Introdução à Ciencia da Computação)
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
Tipos de servidor em redes de computador.pptx
Jira Software projetos completos com scrum
ccursoammaiacursoammaiacursoammaia123456
Processamento da remessa no SAP ERP, SCM610 Col15
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf

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.