Tech Talk Buscapé - Clean Code
-
Upload
marcelo-tozzi-de-lima -
Category
Technology
-
view
327 -
download
0
Transcript of Tech Talk Buscapé - Clean Code
Código Limpo
@marcelotozzi | www.marcelotozzi.com [email protected] | Talk
A cozinha...
O código ruim já te atrapalhou?
Por que ele foi escrito assim?
Bem provável!
Você achou que não teria tempo pra fazer um bom
trabalho?
Seu chefe ficaria p*** se você demorasse mais por um bom
código?
Saco cheio daquele código?
Mais coisas pra fazer?
Produto extraordinário.
Vários bugs.
Release apressado.
O código ficou uma zona!
O código ruim acabou com a empresa!
#comofaz?
+ pessoas. Não conhecem. Pressão.
Quanto mais confuso, menor a #produtividade.
piorar++
Um dia alguém vai ler seu código.
Regra do escoteiro
“Deixe a área do acampamento mais limpa do que como você a encontrou.”
Nomes significativos
Revele propósito!
Bons nomes todos entendem.
Evite informações erradas
Palavras com significado que
podem desviar do que desejamos passar.
Um atributo accountList...
E se não for um List?E se for uma String?
accountList.concat()? accountList.substring()?
accountList.toLowerCase()?
Nomes de classes
Use substantivos como:
Client, WikiPage, Account...
Evite palavras como:
Manager, Processor, Data, Info...
Não use verbos.
Nomes de métodosUse verbos:
postPayment, deletePage, save
Métodos de acessos:
get / set / is
Funções
Devem ser pequenas
Fazer apenas uma
coisa
•Abstração maior para menor.
•O código deve poder ser narrado.
Evite fazer coisas escondidas
DRY
Comentários
“Não insira comentários num
código ruim, reescreva-o.”
Comentários legais
• Licensas de software.
• //TODO’s.
• JavaDoc em APIs Públicas.
Comentários ruins
Históricos de alteração.
Comentários óbvios.
Autoria.
Evite comentários se é possível usar um método
ou variável.
Estruturas de dados
Lei de DemeterVocê manda o cachorro andar ou as patas?
#Encapsular o comportamento e a complexidade.
Tratamento de erro
As coisas podem dar #errado!
Use unchecked exception
Aquelas que herdam de RuntimeException.
Lembra?
Não retorne null
Lance uma exception
Lance um objeto SPECIAL CASE
Testes
O código de teste...
Limpo com nomes significativos.
Evolução, mas sem #porcaria.
Produção fica #flexível.
Os códigos de testes são tão importantes quanto o código
de produção. Não é um componente secundário.
Classes
1.Classes devem ser pequenas.
2.Devem ser menores ainda!!!!
Como medir o tamanho de uma classe?
RESPONSABILIDADE!
Cliente
cliente.AvaliarSePodePromoverParaPremium
AvaliadorDeClientePremium
avaliarSePodePromoverParaPremium(cliente)
Sistema
Injeção de Dependência
Desenvolvimento gradual
Esta fedendo, troque!
Obrigado! :)