clean code

54

Upload: marcelo-serpa

Post on 15-Apr-2017

123 views

Category:

Technology


0 download

TRANSCRIPT

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 doque 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?