SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
LIMITES
                                              por Jammes Grenning




Luis Augusto S. Souza / Gabriel Vieira / Tiago Borges / Cézar Augusto Ferreira
Contexto
Raramente controlamos todos os códigos de
nosso sistema:
  - compramos pacotes de outros fabricantes;
  - usamos códigos livres;
  - ou dependemos de equipes de nossa
  própria empresa.
O uso de códigos de terceiros
Fornecedor de Interface X seu Usuário:
  - Fornecedor:
     - visa uma maior aplicabilidade da
     interface para trabalho em diferentes
     ambientes;
     - visa atender a um público maior.
  - Usuário:
     - deseja uma interface que atenda suas
     próprias necessidades.
O uso de códigos de terceiros
Exemplo:
  - java.util.Map
       - os Maps tem uma interface bastante
     ampla com diversas capacidades.
  - Vantagem:
       - flexibilidade.
  - Desvantagem:
       - o aplicativo pode construir um Map e
       passá-lo adiante (clear()).
O uso de códigos de terceiros




- A interface no limite (Map) está oculta;
- É possível alterá-lo causando pouco impacto no resto do aplicativo;
- A classe pode forçar regras de modelo de negócios.
O uso de código que ainda não existe
● Há um outro tipo de limite, um que separa o
  conhecido do desconhecido.
● Existe lugares no código onde nosso conhecimento
  parece sumir.
● Passos:
   ○   Definir as fronteiras do conhecido e do desconhecido;
   ○   Definir a interface limite;
   ○   Defina um fake para simular as funcionalidades e interações entre as
       interfaces;
   ○   Quando a parte desconhecida se tornar conhecida utilize o padrão
       Adapter para conectar serviços dependentes da interface limite com a
       API, outrora desconhecida, desenvolvida.
Limites Limpos
● Bons projetos de software acomodam modificações
  sem muito investimento ou trabalho.
  ○ O uso de códigos fora de controle implica em
     uma atenção especial ao investimento para
     garantir que mudanças futuras não sejam muito
     onerosas.
● O código nos limites precisa:
  ○ de uma divisão clara
  ○ de testes que definem o que se deve esperar.
● É importante evitar que grande parte do código
  "enchergue" a particularidade de terceiros.
Limites Limpos
● Pense que é melhor você depender de algo que
  você controla do que algo que possa controlar
  você.
● Para lidar com os limites de código:
  ○ podemos empacota-los
  ○ podemos converter a interface perfeita na que
     nos for fornecida.
● Vale lembrar que:
  ○ nosso código se comunica melhor conosco
  ○ possui poucos pontos para serem alterados
     quando um código externo sofre alteração.

Mais conteúdo relacionado

Semelhante a Código limpo: Limites

Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosFrederico Madeira
 
Projeto IV - Tecnologias básicas da Web X.0
Projeto IV - Tecnologias básicas da Web X.0Projeto IV - Tecnologias básicas da Web X.0
Projeto IV - Tecnologias básicas da Web X.0Germano Luis
 
izCode Argumento Técnico
izCode Argumento TécnicoizCode Argumento Técnico
izCode Argumento Técnicojoaopauloaos
 
Trabalho 2 Vinicius Giusti
Trabalho 2   Vinicius GiustiTrabalho 2   Vinicius Giusti
Trabalho 2 Vinicius Giustinigiusti
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídiaFábio Costa
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídiaFábio Costa
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Leandro Silva
 
Software Livre, O Caminho do Futuro
Software Livre, O Caminho do FuturoSoftware Livre, O Caminho do Futuro
Software Livre, O Caminho do Futuroterramel
 
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
 
Aula - Arquiteturas de aplicações móveis
Aula - Arquiteturas de aplicações móveisAula - Arquiteturas de aplicações móveis
Aula - Arquiteturas de aplicações móveisJanynne Gomes
 

Semelhante a Código limpo: Limites (20)

Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
Low code
Low codeLow code
Low code
 
Projeto IV - Tecnologias básicas da Web X.0
Projeto IV - Tecnologias básicas da Web X.0Projeto IV - Tecnologias básicas da Web X.0
Projeto IV - Tecnologias básicas da Web X.0
 
izCode Argumento Técnico
izCode Argumento TécnicoizCode Argumento Técnico
izCode Argumento Técnico
 
InfraGUIBuilder
InfraGUIBuilderInfraGUIBuilder
InfraGUIBuilder
 
Apres s4
Apres s4 Apres s4
Apres s4
 
DDD
DDDDDD
DDD
 
Trabalho 2 Vinicius Giusti
Trabalho 2   Vinicius GiustiTrabalho 2   Vinicius Giusti
Trabalho 2 Vinicius Giusti
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Software Livre, O Caminho do Futuro
Software Livre, O Caminho do FuturoSoftware Livre, O Caminho do Futuro
Software Livre, O Caminho do Futuro
 
Linuxtips - a saideira
Linuxtips - a saideiraLinuxtips - a saideira
Linuxtips - a saideira
 
slidesuab
slidesuabslidesuab
slidesuab
 
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, ...
 
Go global para Windows
Go global para WindowsGo global para Windows
Go global para Windows
 
10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf
 
Seguranca.pdf
Seguranca.pdfSeguranca.pdf
Seguranca.pdf
 
Aula - Arquiteturas de aplicações móveis
Aula - Arquiteturas de aplicações móveisAula - Arquiteturas de aplicações móveis
Aula - Arquiteturas de aplicações móveis
 

Mais de Inael Rodrigues

Artigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemArtigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemInael Rodrigues
 
Arquiteturas de sistemas reais
Arquiteturas de sistemas reaisArquiteturas de sistemas reais
Arquiteturas de sistemas reaisInael Rodrigues
 
Codigo limpo: Nomes Significativos Cap 2
Codigo limpo:  Nomes Significativos Cap 2Codigo limpo:  Nomes Significativos Cap 2
Codigo limpo: Nomes Significativos Cap 2Inael Rodrigues
 
Código limpo: Comentários
Código limpo:   ComentáriosCódigo limpo:   Comentários
Código limpo: ComentáriosInael Rodrigues
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3Inael Rodrigues
 
Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Inael Rodrigues
 
Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Inael Rodrigues
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Inael Rodrigues
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: ClassesInael Rodrigues
 
Teste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiTeste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiInael Rodrigues
 
TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android Inael Rodrigues
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityInael Rodrigues
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilInael Rodrigues
 
Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Inael Rodrigues
 
Android bootcamp 06-01-2012 Part 1
Android bootcamp  06-01-2012 Part 1Android bootcamp  06-01-2012 Part 1
Android bootcamp 06-01-2012 Part 1Inael Rodrigues
 

Mais de Inael Rodrigues (18)

Artigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemArtigo Monitoramento de Pastagem
Artigo Monitoramento de Pastagem
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Arquiteturas de sistemas reais
Arquiteturas de sistemas reaisArquiteturas de sistemas reais
Arquiteturas de sistemas reais
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Codigo limpo: Nomes Significativos Cap 2
Codigo limpo:  Nomes Significativos Cap 2Codigo limpo:  Nomes Significativos Cap 2
Codigo limpo: Nomes Significativos Cap 2
 
Código limpo: Comentários
Código limpo:   ComentáriosCódigo limpo:   Comentários
Código limpo: Comentários
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3
 
Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09
 
Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: Classes
 
Paa algoritmos gulosos
Paa  algoritmos gulososPaa  algoritmos gulosos
Paa algoritmos gulosos
 
Teste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiTeste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta Jabuti
 
TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento Ágil
 
Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2
 
Android bootcamp 06-01-2012 Part 1
Android bootcamp  06-01-2012 Part 1Android bootcamp  06-01-2012 Part 1
Android bootcamp 06-01-2012 Part 1
 

Código limpo: Limites

  • 1. LIMITES por Jammes Grenning Luis Augusto S. Souza / Gabriel Vieira / Tiago Borges / Cézar Augusto Ferreira
  • 2. Contexto Raramente controlamos todos os códigos de nosso sistema: - compramos pacotes de outros fabricantes; - usamos códigos livres; - ou dependemos de equipes de nossa própria empresa.
  • 3. O uso de códigos de terceiros Fornecedor de Interface X seu Usuário: - Fornecedor: - visa uma maior aplicabilidade da interface para trabalho em diferentes ambientes; - visa atender a um público maior. - Usuário: - deseja uma interface que atenda suas próprias necessidades.
  • 4. O uso de códigos de terceiros Exemplo: - java.util.Map - os Maps tem uma interface bastante ampla com diversas capacidades. - Vantagem: - flexibilidade. - Desvantagem: - o aplicativo pode construir um Map e passá-lo adiante (clear()).
  • 5. O uso de códigos de terceiros - A interface no limite (Map) está oculta; - É possível alterá-lo causando pouco impacto no resto do aplicativo; - A classe pode forçar regras de modelo de negócios.
  • 6. O uso de código que ainda não existe ● Há um outro tipo de limite, um que separa o conhecido do desconhecido. ● Existe lugares no código onde nosso conhecimento parece sumir. ● Passos: ○ Definir as fronteiras do conhecido e do desconhecido; ○ Definir a interface limite; ○ Defina um fake para simular as funcionalidades e interações entre as interfaces; ○ Quando a parte desconhecida se tornar conhecida utilize o padrão Adapter para conectar serviços dependentes da interface limite com a API, outrora desconhecida, desenvolvida.
  • 7. Limites Limpos ● Bons projetos de software acomodam modificações sem muito investimento ou trabalho. ○ O uso de códigos fora de controle implica em uma atenção especial ao investimento para garantir que mudanças futuras não sejam muito onerosas. ● O código nos limites precisa: ○ de uma divisão clara ○ de testes que definem o que se deve esperar. ● É importante evitar que grande parte do código "enchergue" a particularidade de terceiros.
  • 8. Limites Limpos ● Pense que é melhor você depender de algo que você controla do que algo que possa controlar você. ● Para lidar com os limites de código: ○ podemos empacota-los ○ podemos converter a interface perfeita na que nos for fornecida. ● Vale lembrar que: ○ nosso código se comunica melhor conosco ○ possui poucos pontos para serem alterados quando um código externo sofre alteração.