Agenda
● Motivação
● Nomes significativos
● Funções
● Comentários
● Formatação
● Tratamento de exceção
● Testes de unidade
Era uma vez em 1980...
● Maiores intervalos entre lançamentos
● Bugs não eram corrigidos
● Cada vez mais travamentos
Alguns anos depois...
O custo de ter um código confuso
Por que não fazer de novo?
Afinal somos melhores do
que quando começamos
Sem comentários
Escolhendo nomes significativos
Um bom nome precisa responder 3 perguntas:
1. Por que existe?
2. O que faz?
3. Como é usado?
Use nomes que revelem seu proposito
Cuidado para não passar informações erradas!
Evite nomes sem significado
Outro exemplo
Use palavras pronunciáveis
Notação Húngara
Notação Húngara
Funções
Funções devem ser:
● Pequenas
● Fazer apenas uma coisa
● Ser bem nomeadas
● Devem ser lidas de cima para baixo
● Extrair trechos para funções menores
● DRY
Cuidado com a quantidade de parâmetros
Qual é a
quantidade ideal
de parâmetros?
ZERO
Mônades
● Geralmente perguntam ou transformam algo
● Evitar retornos void
● Evitar parâmetros lógicos
Díades
● Sempre tentar transformá-la em mônade
● Parâmetros deve fazer parte do mesmo
valor
● Cuidar a ordem dos parâmetros
Tríades
Problemas:
+ pausa
+ ignoração
+ dificuldade de manter a ordem
Comentários
Comentários geralmente:
● Mentem
● Desatualizam
● Imprecisos
Porque o código muda!
Porque o código muda!
Porque o código muda!
Uso de comentários
● Esclarecimento
● Alerta de consequência
● JavaDoc em API pública
● Comentário legal
● TODO
● Redundantes
● Longos
● HTML
● Explicando código
● Ao lados de cada chave
● JavaDoc em API NÃO
pública
● Código comentado
Formatação
Alguns cuidados:
● Manter o código bem identado
● Distância vertical
● Função dependente
● Linha de no máximo 120 caracteres
● Classes devem tem o minimo de linhas
possível
Tratamento de exceções
Exceções
● Usar exceções em vez de retornar código de erro
● Não pode obscurecer a lógica
● Criar testes que forcem a exceção
● Use exceções não verificadas
● Lance exceções com um contexto
Não retorne NULL
Não retorne NULL
Diminui o número de NullPointerException
Não passe NULL
Testes de Unidade
As 3 leis do TDD
● Você não pode escrever código de produção a menos que ele
tenha um teste de unidade que falha.
● Você não pode escrever mais teste de unidade que o suficiente
para falhar; e erros de compilação são falhas.
● Você não pode escrever mais que o suficiente, para o código de
produção passar em um teste de unidade.
Vantagens
● flexibilidade
● código limpo
● passível de mudanças
● feedback
● segurança
● maior produtividade
Testes = Código
Classes
Como elas devem ser?
● Possuir nomes descritivos
● Pequenas
● SRP
● Alta coesão
O que é SRP?
O que é alta coesão?
Clean code

Clean code