SlideShare uma empresa Scribd logo
1 de 48
Interface com dois métodos continua sendo
funcional?
Sim, porém só pode ter 1 método abstrato,
restante dos métodos devem estar implementados.
Correto: Errado:
Synchronized e streams?
Streams paralelas funcionam com threads,
"percorrendo de forma assíncrona as coleções."
Por padrao trabalha com a quantidade de thread disponivel no cpu.
ForEachComum: ForEachOrdered:
O que é injeção de dependência?
Cuidado para não perder o principio da inversão de dependencia
criando uma instancia direta do objeto ao invés de utilizar uma interface.
jigsaw - injeção de dependencia modular
No Java 9 deve-se exportar e requisitar os modulos aos quais irá ter injeção.
HTTP
- Content-Type.
informa ao cliente ou servidor o tipo de midia do recurso.(Seu tipo de conteudo.)
- http Options.
- CORS – compartilhamento de recursos com origens diferentes, incluindo no header esta config.
Access-Control-Allow-Origin: * (a todos)Access-Control-Allow-Origin: * (a todos)
https://www.test-cors.org/
HTTP
Metodo para alterar somente um campo : PATCH
Tipos de parametros http
@PathVariable - valor da variável é passada diretamente na URL
@RequestParam - não são parte da url em sí.
Possibilidade de interceptar http : Sim, existe algumas maneiras diferentes,Sim, existe algumas maneiras diferentes,
(EX: Wireshark,API webRequest,RestTemplate.)(EX: Wireshark,API webRequest,RestTemplate.)
HTTP
Erro 401 : considerou que a solicitacao estava correta,considerou que a solicitacao estava correta,
mas o acesso ao recurso URL exige autenticação domas o acesso ao recurso URL exige autenticação do
usuário. (EX: senha e login incorreto.)usuário. (EX: senha e login incorreto.)
Erro 403 : não foi dada autorização de acesso independente donão foi dada autorização de acesso independente do
que o cliente forneça. (EX:que o cliente forneça. (EX:restrição de privilégios.)restrição de privilégios.)
Erro 405 : como método não permitido (EX:quando um método HTTP estácomo método não permitido (EX:quando um método HTTP está
configurado no server, mas foi desabilitado para a URI.configurado no server, mas foi desabilitado para a URI.
Criptografia: A criptografia transforma dados legíveis em ilegíveis para transmissãoA criptografia transforma dados legíveis em ilegíveis para transmissão
segura e, em seguida, usar uma chave para transformá-lo de volta em dados legíveissegura e, em seguida, usar uma chave para transformá-lo de volta em dados legíveis
quando atinge seu destino.quando atinge seu destino.
SOAP
● Baseado em XML.
● Independe de protocolo.
SOA X MICROSERVICES
Problema SOA : Banco de dados único.Banco de dados único.
Api’s de diferentes linguagens se comunicam : sim, api's trocam informações,sim, api's trocam informações,
uma api manda dados para outra que irá processa-los e devolve-los sem nemuma api manda dados para outra que irá processa-los e devolve-los sem nem
saber qual codigo fonte esta rodando. Quem trabalha a comunicação é osaber qual codigo fonte esta rodando. Quem trabalha a comunicação é o
protocolo.protocolo.
Serviço recebendo muitos acessos : Load Balancer, funciona como umLoad Balancer, funciona como um
policial de transito, organizando as requisições e garantindo que aspolicial de transito, organizando as requisições e garantindo que as
chamadas sejam otimizadas e resolvendo problemas de sobrecarga.chamadas sejam otimizadas e resolvendo problemas de sobrecarga.
Gateway : O padrão do Gateway de API é implementado como um únicoO padrão do Gateway de API é implementado como um único
ponto de entrada para todos os aplicativos clientes consumirem APIs eponto de entrada para todos os aplicativos clientes consumirem APIs e
serviços de back-end.serviços de back-end.
VERSIONAMENTO
- Um campo a mais de retorno quebra contrato? Sim qualquer alteraçãoSim qualquer alteração
daquilo que foi acordado no contrato se configura como quebra.daquilo que foi acordado no contrato se configura como quebra.
- Um header a mais quebra contrato? Sim, headers são definidos no contratoSim, headers são definidos no contrato
e não devem sofrer alteração.e não devem sofrer alteração.
- Adicionar cache a aplicação quebra contrato? Não, pois cache é umNão, pois cache é um
facilitador de acesso a memória e não altera contrato.facilitador de acesso a memória e não altera contrato.
- Contrato de excessoes? É o contrato das possíveis excessões dentro daÉ o contrato das possíveis excessões dentro da
aplicação, assim documentando e acordando possíveis erros, facilitando paraaplicação, assim documentando e acordando possíveis erros, facilitando para
quem a utilizaquem a utiliza.
Contrato da API vai ter descrito os campos, seus tipos, retornos etc… fazendo
Alterações nos mesmos haverá quebra de contrato.
SOLID
5 principios com o
objetivo de tornar o
codigo mais simples
limpo e seguro.
(SOLIDO)
● S  - Single Responsiblity Principle
(Princípio da responsabilidade única)
● O - Open-Closed Principle (Princípio
Aberto-Fechado)
● L - Liskov Substitution Principle (Princípio 
da substituição de Liskov)
● I -  Interface Segregation Principle
(Princípio da Segregação da Interface)
● D - Dependency Inversion Principle 
(Princípio da inversão da dependência)
SOLID-S REPONSABILIDADE UNICA
Uma Classe deve conter somente
responsabilidades que são suas.
SOLID-S REPONSABILIDADE UNICA
Classes ou metodos
com mais
responsabilidade
dificultam
manutenção e torna o
codigo bagunçado.
Exemplo Ruim :
SOLID- S REPONSABILIDADE UNICA
Classe conta serve
apenas de “molde” e
as validações
referentes a conta
ficam em seu próprio
contesto.
Exemplo Correto
SOLID- O ABERTO/FECHADO
Entidades de software ( classes,
métodos, módulo, etc ) devem estar
abertas para extensão, mas
fechadas para modificação.
SOLID- O ABERTO/FECHADO
Caso surja novos
tipos de funcionários
existirá a
necessidade de
modificar a classe.
Exemplo Ruim :
SOLID- O ABERTO/FECHADO
Exemplo Correto :
Havendo necessidade de evolução, só necessita estender novamente a classe.
SOLID- L Substituição de Liskov
Classes derivadas devem poder ser
substitutas de suas classes base
SOLID- L Substituição de Liskov
Subtipos devem poder
substituir seus tipos base.
Exemplo Ruim :
Método faz pagamento funcionário
Efetuando pagamento :
Saída :
Classe Estende Funcionário :
SOLID- L Substituição de Liskov
Quando subtipos não alteram atributos do seu tipo base e consegue manter o
contexto de funcionamento, o principio permanece intacto.
Exemplo Bom :
Classe Estende Funcionário :
SOLID- I Segregação de Interface
Trata de manter as interfaces coesas,
definindo que as classes que a
implementem não devem ser forçadas a
depender de metodos que não usam
SOLID- I Segregação de Interface
Classes derivadas não devem ser obrigadas a
depender de metodos que não usam.Exemplo Ruim :
Classe que implementam Funcionário :
Havendo alguma alteração na
assinatura do
Metodo, todas teram que ser
alteradas.
Pode levar a violação do LSP.
SOLID- I Segregação de Interface
Classes que implementam as interfaces devem ter a
necessidade de implementar os metodos que estão na
mesma.
Exemplo Bom :
Classe que implementam Estagiario :
SOLID- D Inversão de dependência
sempre dependa de uma abstração
e nunca de uma implementação, ou
de uma classe concreta.
SOLID- D Inversão de dependência
A classe Repository é instanciada dentro
da service, fazendo com que se torne
estatica.
Exemplo Ruim :
Criando uma dependencia da
classe cliente com a classe
abaixo.
SOLID- D Inversão de dependência
Utilizando a interface Repository e injetando a mesma na classe cria-se um contrato,
um padrão assim evitando que seja quebrado e diminuindo a dependencia de
classes.Aumentando abstração.
Exemplo Bom :
@Awtowired
DRY
Cada parte do codigo deve ter uma
representação única, não ambígua e
definitiva dentro do sistema.
DRY
Exemplo Ruim :
Codigo se propaga pela aplicação, caso
Necessite alterar algo terá que ser
em todos os locais onde esta implementado.
+ velocidade - coesão
DRY
Refatorando esta situação para uma classe
Utilitária, desta forma podendo ser chamada
em qualquer contexto da aplicação.
UtilService : UsuarioService :
UsuarioController :
KISS
Mantenha isso estupidamente simples.
Refere-se a simplificar o maximo
ganhando em vários aspectos.
KISS
Pode se dizer que a simplificação esta nas
nossas vidas como foco.
1981 - IBM5150 2019 – Ipad mini
KISS
Codigo mais complicado de ler .
Mais complicado para entender.
Maior facilidade de leitura, até mesmo um leigo entende.
KISS
● Mantenha os métodos e as classes pequenas.
● Use nomes claros para as variáveis.
● Não reutilizar variáveis.
● Divida o problema em partes menores.
● Não abuse dos comentários.
Design Pattern - Repository
Responsavel pela mediação entre o
dominio e a camada de mapeamento
de dados,agindo como uma coleção
de objetos em memoria.
Design Pattern - Repository
Dificulta a realização de testes unitários da camada
de negócios;
Cria dependências externas (banco de dados) na
lógica de negócio;
Duplica o código de acesso a dados por meio da
camada de negócio.
Problema :
Design Pattern - Repository
Separa a lógica de acesso a dados e
mapeia essa lógica para entidades na
lógica de negócio.
Solução :
Design Pattern - Repository
Vantagens :
●
Encapsula as logicas
de consulta da
aplicação, ex(CRUD)
●
Facilita testes
unitarios na
aplicação.
●
Camada de negócios pode ser testada
sem a necessidade de fontes externas;
●
A lógica de acesso a dados pode ser
testada separadamente;
●
Não existe a duplicação de código;
●
A centralização da lógica de acesso a
dados torna a manutenção mais fácil.
Design Pattern - Repository
Repository serve como janela de transição
das camadas.
Exemplo Uso :
Extendendo CrudRepository:
Uso da Repository injetada na Service.
Design Pattern - DTO
objeto simples usado para transferir
dados de um local a outro na
aplicação, sem lógica de negócios
em seus objetos.
objeto simples usado para transferir
dados de um local a outro na
aplicação, sem lógica de negócios
em seus objetos.
Design Pattern - DTO
Utilizando dto podemos definir aquilo que pode ser alterado, como no
exemplo o campo admin não será setado.
Exemplo Uso :
Design Pattern - DTO
Mesmo setando como admin no post,
ele não fará a alteração.
POST : GET
:
API – boas práticas
* Use substantivos, mas sem verbos
* Use os substantivos plurais e mantenha isto uniforme.
* Códigos de status de resposta HTTP ******
API – boas práticas
Outras boas praticas :
*Filtro.
*Ordenação.
*Seleção de campo de Retorno.
*Paginação.
*Preferir JSON.
*camelCase para nomes de campo.
*Documente a API facilitando o uso.
*nome composto : errado tarifaExportacao, correto é tarifas-exportacao.
*Não abreviar.
*Quando necessário versionar a API.
*Padronização do formato de datas. Use o padrão ISO8601.
*informar no header da mensagem o “Content-type” e
*“Accept” utilizados pelo serviço.
API – Style Guide
Utilizado para nortear e padronizar o desenvolvimento de uma API.
Ex : https://dev.senior.com.br/documentacao/desenv-api-nomenclatura/
API – Style Guide
Ex : aba formato da API.
API – Style Guide
Um guia de estilo da API geralmente inclui os seguintes tópicos:
*Introdução.
*Fundamentos da API.
*Padrões.
*Padrões de design.
*Gerenciamento de LifeCycle.
*Ferramentas e tecnologias.
*Recomendações operacionais.
*Leitura adicional.
API – Style Guide
Facilitadores.
conjunto de ferramentas de código aberto
construídas em torno da Especificação OpenAPI
que podem ajudá-lo a projetar, criar, documentar
e consumir APIs REST.
Um formato de descrição da API para APIs
REST. Um arquivo OpenAPI permite que
você descreva sua API inteira
API – Style Guide
Exemplo ferramenta SwaggerEditor :

Mais conteúdo relacionado

Mais procurados

What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaEdureka!
 
Code Coverage Revised : EclEmma on JaCoCo
Code Coverage Revised : EclEmma on JaCoCoCode Coverage Revised : EclEmma on JaCoCo
Code Coverage Revised : EclEmma on JaCoCoEvgeny Mandrikov
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Web API testing : A quick glance
Web API testing : A quick glanceWeb API testing : A quick glance
Web API testing : A quick glanceDhanalaxmi K
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasHelder da Rocha
 
Xporter for Jira - Advanced topics
Xporter for Jira  - Advanced topicsXporter for Jira  - Advanced topics
Xporter for Jira - Advanced topicsXpand IT
 
What is an Application programming interface(API)?
What is an Application programming interface(API)?What is an Application programming interface(API)?
What is an Application programming interface(API)?Akmal Ali
 
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...Simplilearn
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding RESTNitin Pande
 
Melbourne API Management Seminar
Melbourne API Management SeminarMelbourne API Management Seminar
Melbourne API Management SeminarCA API Management
 
Introduction to API
Introduction to APIIntroduction to API
Introduction to APIrajnishjha29
 
RESTful Architecture
RESTful ArchitectureRESTful Architecture
RESTful ArchitectureKabir Baidya
 
Oracle Web ADI Implementation Steps
Oracle Web ADI Implementation StepsOracle Web ADI Implementation Steps
Oracle Web ADI Implementation Stepsstandale
 

Mais procurados (20)

What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | Edureka
 
REST API
REST APIREST API
REST API
 
Clean Code
Clean CodeClean Code
Clean Code
 
Code Coverage Revised : EclEmma on JaCoCo
Code Coverage Revised : EclEmma on JaCoCoCode Coverage Revised : EclEmma on JaCoCo
Code Coverage Revised : EclEmma on JaCoCo
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
Web API testing : A quick glance
Web API testing : A quick glanceWeb API testing : A quick glance
Web API testing : A quick glance
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemas
 
Xporter for Jira - Advanced topics
Xporter for Jira  - Advanced topicsXporter for Jira  - Advanced topics
Xporter for Jira - Advanced topics
 
What is an Application programming interface(API)?
What is an Application programming interface(API)?What is an Application programming interface(API)?
What is an Application programming interface(API)?
 
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
 
Api types
Api typesApi types
Api types
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
 
Melbourne API Management Seminar
Melbourne API Management SeminarMelbourne API Management Seminar
Melbourne API Management Seminar
 
Introduction to API
Introduction to APIIntroduction to API
Introduction to API
 
Spring annotation
Spring annotationSpring annotation
Spring annotation
 
Apache cordova
Apache cordovaApache cordova
Apache cordova
 
RESTful Architecture
RESTful ArchitectureRESTful Architecture
RESTful Architecture
 
Oracle Web ADI Implementation Steps
Oracle Web ADI Implementation StepsOracle Web ADI Implementation Steps
Oracle Web ADI Implementation Steps
 

Semelhante a Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, boas praticas com api, style guide,

Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Vinicius Pulgatti
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoThiago Marinho
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsHeider Lopes
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
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
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento webValdir Junior
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoRogerio Fontes
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal RailsLuiz Costa
 

Semelhante a Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, boas praticas com api, style guide, (20)

Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Apres s4
Apres s4 Apres s4
Apres s4
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
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
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento web
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
Palestra
PalestraPalestra
Palestra
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Trabalho Final PSDC - Simião
Trabalho Final PSDC - SimiãoTrabalho Final PSDC - Simião
Trabalho Final PSDC - Simião
 
Aula1
Aula1Aula1
Aula1
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Rest introdução
Rest introduçãoRest introdução
Rest introdução
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal Rails
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 

Último

Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaronaldojacademico
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 

Último (20)

Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riqueza
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 

Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, boas praticas com api, style guide,

  • 1. Interface com dois métodos continua sendo funcional? Sim, porém só pode ter 1 método abstrato, restante dos métodos devem estar implementados. Correto: Errado:
  • 2. Synchronized e streams? Streams paralelas funcionam com threads, "percorrendo de forma assíncrona as coleções." Por padrao trabalha com a quantidade de thread disponivel no cpu. ForEachComum: ForEachOrdered:
  • 3. O que é injeção de dependência? Cuidado para não perder o principio da inversão de dependencia criando uma instancia direta do objeto ao invés de utilizar uma interface.
  • 4. jigsaw - injeção de dependencia modular No Java 9 deve-se exportar e requisitar os modulos aos quais irá ter injeção.
  • 5. HTTP - Content-Type. informa ao cliente ou servidor o tipo de midia do recurso.(Seu tipo de conteudo.) - http Options. - CORS – compartilhamento de recursos com origens diferentes, incluindo no header esta config. Access-Control-Allow-Origin: * (a todos)Access-Control-Allow-Origin: * (a todos) https://www.test-cors.org/
  • 6. HTTP Metodo para alterar somente um campo : PATCH Tipos de parametros http @PathVariable - valor da variável é passada diretamente na URL @RequestParam - não são parte da url em sí. Possibilidade de interceptar http : Sim, existe algumas maneiras diferentes,Sim, existe algumas maneiras diferentes, (EX: Wireshark,API webRequest,RestTemplate.)(EX: Wireshark,API webRequest,RestTemplate.)
  • 7. HTTP Erro 401 : considerou que a solicitacao estava correta,considerou que a solicitacao estava correta, mas o acesso ao recurso URL exige autenticação domas o acesso ao recurso URL exige autenticação do usuário. (EX: senha e login incorreto.)usuário. (EX: senha e login incorreto.) Erro 403 : não foi dada autorização de acesso independente donão foi dada autorização de acesso independente do que o cliente forneça. (EX:que o cliente forneça. (EX:restrição de privilégios.)restrição de privilégios.) Erro 405 : como método não permitido (EX:quando um método HTTP estácomo método não permitido (EX:quando um método HTTP está configurado no server, mas foi desabilitado para a URI.configurado no server, mas foi desabilitado para a URI. Criptografia: A criptografia transforma dados legíveis em ilegíveis para transmissãoA criptografia transforma dados legíveis em ilegíveis para transmissão segura e, em seguida, usar uma chave para transformá-lo de volta em dados legíveissegura e, em seguida, usar uma chave para transformá-lo de volta em dados legíveis quando atinge seu destino.quando atinge seu destino.
  • 8. SOAP ● Baseado em XML. ● Independe de protocolo.
  • 9. SOA X MICROSERVICES Problema SOA : Banco de dados único.Banco de dados único. Api’s de diferentes linguagens se comunicam : sim, api's trocam informações,sim, api's trocam informações, uma api manda dados para outra que irá processa-los e devolve-los sem nemuma api manda dados para outra que irá processa-los e devolve-los sem nem saber qual codigo fonte esta rodando. Quem trabalha a comunicação é osaber qual codigo fonte esta rodando. Quem trabalha a comunicação é o protocolo.protocolo. Serviço recebendo muitos acessos : Load Balancer, funciona como umLoad Balancer, funciona como um policial de transito, organizando as requisições e garantindo que aspolicial de transito, organizando as requisições e garantindo que as chamadas sejam otimizadas e resolvendo problemas de sobrecarga.chamadas sejam otimizadas e resolvendo problemas de sobrecarga. Gateway : O padrão do Gateway de API é implementado como um únicoO padrão do Gateway de API é implementado como um único ponto de entrada para todos os aplicativos clientes consumirem APIs eponto de entrada para todos os aplicativos clientes consumirem APIs e serviços de back-end.serviços de back-end.
  • 10. VERSIONAMENTO - Um campo a mais de retorno quebra contrato? Sim qualquer alteraçãoSim qualquer alteração daquilo que foi acordado no contrato se configura como quebra.daquilo que foi acordado no contrato se configura como quebra. - Um header a mais quebra contrato? Sim, headers são definidos no contratoSim, headers são definidos no contrato e não devem sofrer alteração.e não devem sofrer alteração. - Adicionar cache a aplicação quebra contrato? Não, pois cache é umNão, pois cache é um facilitador de acesso a memória e não altera contrato.facilitador de acesso a memória e não altera contrato. - Contrato de excessoes? É o contrato das possíveis excessões dentro daÉ o contrato das possíveis excessões dentro da aplicação, assim documentando e acordando possíveis erros, facilitando paraaplicação, assim documentando e acordando possíveis erros, facilitando para quem a utilizaquem a utiliza. Contrato da API vai ter descrito os campos, seus tipos, retornos etc… fazendo Alterações nos mesmos haverá quebra de contrato.
  • 11. SOLID 5 principios com o objetivo de tornar o codigo mais simples limpo e seguro. (SOLIDO) ● S  - Single Responsiblity Principle (Princípio da responsabilidade única) ● O - Open-Closed Principle (Princípio Aberto-Fechado) ● L - Liskov Substitution Principle (Princípio  da substituição de Liskov) ● I -  Interface Segregation Principle (Princípio da Segregação da Interface) ● D - Dependency Inversion Principle  (Princípio da inversão da dependência)
  • 12. SOLID-S REPONSABILIDADE UNICA Uma Classe deve conter somente responsabilidades que são suas.
  • 13. SOLID-S REPONSABILIDADE UNICA Classes ou metodos com mais responsabilidade dificultam manutenção e torna o codigo bagunçado. Exemplo Ruim :
  • 14. SOLID- S REPONSABILIDADE UNICA Classe conta serve apenas de “molde” e as validações referentes a conta ficam em seu próprio contesto. Exemplo Correto
  • 15. SOLID- O ABERTO/FECHADO Entidades de software ( classes, métodos, módulo, etc ) devem estar abertas para extensão, mas fechadas para modificação.
  • 16. SOLID- O ABERTO/FECHADO Caso surja novos tipos de funcionários existirá a necessidade de modificar a classe. Exemplo Ruim :
  • 17. SOLID- O ABERTO/FECHADO Exemplo Correto : Havendo necessidade de evolução, só necessita estender novamente a classe.
  • 18. SOLID- L Substituição de Liskov Classes derivadas devem poder ser substitutas de suas classes base
  • 19. SOLID- L Substituição de Liskov Subtipos devem poder substituir seus tipos base. Exemplo Ruim : Método faz pagamento funcionário Efetuando pagamento : Saída : Classe Estende Funcionário :
  • 20. SOLID- L Substituição de Liskov Quando subtipos não alteram atributos do seu tipo base e consegue manter o contexto de funcionamento, o principio permanece intacto. Exemplo Bom : Classe Estende Funcionário :
  • 21. SOLID- I Segregação de Interface Trata de manter as interfaces coesas, definindo que as classes que a implementem não devem ser forçadas a depender de metodos que não usam
  • 22. SOLID- I Segregação de Interface Classes derivadas não devem ser obrigadas a depender de metodos que não usam.Exemplo Ruim : Classe que implementam Funcionário : Havendo alguma alteração na assinatura do Metodo, todas teram que ser alteradas. Pode levar a violação do LSP.
  • 23. SOLID- I Segregação de Interface Classes que implementam as interfaces devem ter a necessidade de implementar os metodos que estão na mesma. Exemplo Bom : Classe que implementam Estagiario :
  • 24. SOLID- D Inversão de dependência sempre dependa de uma abstração e nunca de uma implementação, ou de uma classe concreta.
  • 25. SOLID- D Inversão de dependência A classe Repository é instanciada dentro da service, fazendo com que se torne estatica. Exemplo Ruim : Criando uma dependencia da classe cliente com a classe abaixo.
  • 26. SOLID- D Inversão de dependência Utilizando a interface Repository e injetando a mesma na classe cria-se um contrato, um padrão assim evitando que seja quebrado e diminuindo a dependencia de classes.Aumentando abstração. Exemplo Bom : @Awtowired
  • 27. DRY Cada parte do codigo deve ter uma representação única, não ambígua e definitiva dentro do sistema.
  • 28. DRY Exemplo Ruim : Codigo se propaga pela aplicação, caso Necessite alterar algo terá que ser em todos os locais onde esta implementado. + velocidade - coesão
  • 29. DRY Refatorando esta situação para uma classe Utilitária, desta forma podendo ser chamada em qualquer contexto da aplicação. UtilService : UsuarioService : UsuarioController :
  • 30. KISS Mantenha isso estupidamente simples. Refere-se a simplificar o maximo ganhando em vários aspectos.
  • 31. KISS Pode se dizer que a simplificação esta nas nossas vidas como foco. 1981 - IBM5150 2019 – Ipad mini
  • 32. KISS Codigo mais complicado de ler . Mais complicado para entender. Maior facilidade de leitura, até mesmo um leigo entende.
  • 33. KISS ● Mantenha os métodos e as classes pequenas. ● Use nomes claros para as variáveis. ● Não reutilizar variáveis. ● Divida o problema em partes menores. ● Não abuse dos comentários.
  • 34. Design Pattern - Repository Responsavel pela mediação entre o dominio e a camada de mapeamento de dados,agindo como uma coleção de objetos em memoria.
  • 35. Design Pattern - Repository Dificulta a realização de testes unitários da camada de negócios; Cria dependências externas (banco de dados) na lógica de negócio; Duplica o código de acesso a dados por meio da camada de negócio. Problema :
  • 36. Design Pattern - Repository Separa a lógica de acesso a dados e mapeia essa lógica para entidades na lógica de negócio. Solução :
  • 37. Design Pattern - Repository Vantagens : ● Encapsula as logicas de consulta da aplicação, ex(CRUD) ● Facilita testes unitarios na aplicação. ● Camada de negócios pode ser testada sem a necessidade de fontes externas; ● A lógica de acesso a dados pode ser testada separadamente; ● Não existe a duplicação de código; ● A centralização da lógica de acesso a dados torna a manutenção mais fácil.
  • 38. Design Pattern - Repository Repository serve como janela de transição das camadas. Exemplo Uso : Extendendo CrudRepository: Uso da Repository injetada na Service.
  • 39. Design Pattern - DTO objeto simples usado para transferir dados de um local a outro na aplicação, sem lógica de negócios em seus objetos. objeto simples usado para transferir dados de um local a outro na aplicação, sem lógica de negócios em seus objetos.
  • 40. Design Pattern - DTO Utilizando dto podemos definir aquilo que pode ser alterado, como no exemplo o campo admin não será setado. Exemplo Uso :
  • 41. Design Pattern - DTO Mesmo setando como admin no post, ele não fará a alteração. POST : GET :
  • 42. API – boas práticas * Use substantivos, mas sem verbos * Use os substantivos plurais e mantenha isto uniforme. * Códigos de status de resposta HTTP ******
  • 43. API – boas práticas Outras boas praticas : *Filtro. *Ordenação. *Seleção de campo de Retorno. *Paginação. *Preferir JSON. *camelCase para nomes de campo. *Documente a API facilitando o uso. *nome composto : errado tarifaExportacao, correto é tarifas-exportacao. *Não abreviar. *Quando necessário versionar a API. *Padronização do formato de datas. Use o padrão ISO8601. *informar no header da mensagem o “Content-type” e *“Accept” utilizados pelo serviço.
  • 44. API – Style Guide Utilizado para nortear e padronizar o desenvolvimento de uma API. Ex : https://dev.senior.com.br/documentacao/desenv-api-nomenclatura/
  • 45. API – Style Guide Ex : aba formato da API.
  • 46. API – Style Guide Um guia de estilo da API geralmente inclui os seguintes tópicos: *Introdução. *Fundamentos da API. *Padrões. *Padrões de design. *Gerenciamento de LifeCycle. *Ferramentas e tecnologias. *Recomendações operacionais. *Leitura adicional.
  • 47. API – Style Guide Facilitadores. conjunto de ferramentas de código aberto construídas em torno da Especificação OpenAPI que podem ajudá-lo a projetar, criar, documentar e consumir APIs REST. Um formato de descrição da API para APIs REST. Um arquivo OpenAPI permite que você descreva sua API inteira
  • 48. API – Style Guide Exemplo ferramenta SwaggerEditor :