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

Dicas para deixar seu código mais Robusto