Tech Talk Buscapé - Clean Code

Post on 20-Mar-2017

327 views 0 download

Transcript of Tech Talk Buscapé - Clean Code

Código Limpo

@marcelotozzi | www.marcelotozzi.com marcelotozzidelima@gmail.com | 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! :)