SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Dicas para deixar seu
código mais robusto

         David Robert
    davidrobert@gmail.com
 




Como se proteger?
Mas o que isso
significa em software?
Nem sempre as premissas que
  assumimos como válidas,
    sempre serão válidas
Objeto não é null

Objeto é do tipo que eu espero

 Sistema externo está no ar

 Resposta é bem formatada

Input do usuário é conforme o
          esperado
Robustez X Precisão
Graceful Degradation
                  (Degradação Graciosa)

        
              




A redução de qualidade deve ser proporcional à 
              gravidade da falha
"Seja conservador no que você faz, seja
liberal no que você aceita dos outros"




                           Jonh Postel
"A função de um bom software é fazer
com que o complexo pareça ser
simples"




                        Grady Booch
ALERTA


Combatento
Complexidade
Qual nosso arsenal pra isso?



   Alta Coesão
Baixo Acoplamento
public class Financeiro {
  // ...

1 public void executarPagamentos() {
2   for (Cliente cliente: clientes) {
3      // ...
4      cliente.getCarteira().subtrai(valor);
5      // ...
8   }
9 }

}
public class Financeiro {
  // ...

1 public void executarPagamentos() {
2   for (Cliente cliente: clientes) {
3      // ...
4      cliente.getCarteira().subtrai(valor);
5      // ...
8   }
9 }

}
Lei de Demeter

É um conjunto de regras para 
construir sistemas visando baixo 
acoplamento

Princípio do Mínimo Conhecimento 
Não fale com estrageiros

         ou seja

Fale somente com amigos

 (membros ou parametros)
produto.getCliente().getEndereco().getCEP()
porque um acidente de trem vai estragar o seu dia
produto.getCliente().getEndereco().getCEP()
É possível aplicar o princípio em 
      todos os projetos?
“A Lei de Demeter na verdade
  deveria ser chamada de Sugestão
  de Demeter”




Martin Fowler
o mais importante
   em um projeto é
escrever código bonito
o mais importante
  em um projeto é
escrever código bom
Obrigado!

   while42

Mais conteúdo relacionado

Semelhante a Dicas para deixar seu código mais Robusto

Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Softwareguest2f8cba
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareGabriel Felipe Soares
 
Produtividade com ZF2, PDT & Zend Server Free Edition
Produtividade com ZF2, PDT & Zend Server Free EditionProdutividade com ZF2, PDT & Zend Server Free Edition
Produtividade com ZF2, PDT & Zend Server Free EditionFlávio Lisboa
 
InCuca - Coding dojo - ERP Especificação
InCuca - Coding dojo - ERP EspecificaçãoInCuca - Coding dojo - ERP Especificação
InCuca - Coding dojo - ERP EspecificaçãoInCuca
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScriptTaller Negócio Digitais
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
 
Vamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDVamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDDomingos Teruel
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Gabriel Rubens
 
III SDTA - Processo para Desenvolvimento de Software Seguro (Embarcado e ATM)
III SDTA - Processo para Desenvolvimento de Software Seguro (Embarcado e ATM)III SDTA - Processo para Desenvolvimento de Software Seguro (Embarcado e ATM)
III SDTA - Processo para Desenvolvimento de Software Seguro (Embarcado e ATM)Atech S.A. | Embraer Group
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDatatdc-globalcode
 

Semelhante a Dicas para deixar seu código mais Robusto (20)

Clean code v3
Clean code v3Clean code v3
Clean code v3
 
clean code
clean codeclean code
clean code
 
Clean Code na Prática
Clean Code na PráticaClean Code na Prática
Clean Code na Prática
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Software
 
TCC - Código Limpo
TCC - Código LimpoTCC - Código Limpo
TCC - Código Limpo
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de Software
 
Produtividade com ZF2, PDT & Zend Server Free Edition
Produtividade com ZF2, PDT & Zend Server Free EditionProdutividade com ZF2, PDT & Zend Server Free Edition
Produtividade com ZF2, PDT & Zend Server Free Edition
 
Test First, TDD e outros Bichos
Test First, TDD e outros BichosTest First, TDD e outros Bichos
Test First, TDD e outros Bichos
 
InCuca - Coding dojo - ERP Especificação
InCuca - Coding dojo - ERP EspecificaçãoInCuca - Coding dojo - ERP Especificação
InCuca - Coding dojo - ERP Especificação
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScript
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
Vamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDVamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDD
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
 
Unit test & TDD
Unit test & TDDUnit test & TDD
Unit test & TDD
 
III SDTA - Processo para Desenvolvimento de Software Seguro (Embarcado e ATM)
III SDTA - Processo para Desenvolvimento de Software Seguro (Embarcado e ATM)III SDTA - Processo para Desenvolvimento de Software Seguro (Embarcado e ATM)
III SDTA - Processo para Desenvolvimento de Software Seguro (Embarcado e ATM)
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 

Mais de David Robert Camargo de Campos

Mais de David Robert Camargo de Campos (12)

Evolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto DesempenhoEvolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto Desempenho
 
Evolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoEvolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenho
 
Introdução ao kotlin
Introdução ao kotlinIntrodução ao kotlin
Introdução ao kotlin
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinO uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
 
Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7
 
Times de Alta Performance
Times de Alta PerformanceTimes de Alta Performance
Times de Alta Performance
 
Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
An introduction to programming in Go
An introduction to programming in GoAn introduction to programming in Go
An introduction to programming in Go
 
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
 
Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
 
Como um grande sistema REST funciona
Como um grande sistema REST funcionaComo um grande sistema REST funciona
Como um grande sistema REST funciona
 

Dicas para deixar seu código mais Robusto