Clean code - Mantenha seu código limpo

Post on 19-Jul-2015

292 views 5 download

Transcript of Clean code - Mantenha seu código limpo

Clean CodeTiago Bencardino (tiagobencardino@gmail.com)

O que é “clean code” e por que é importante?

Escolhendo nomes com significado

Funções

Comentários

Agenda

Facilmente entendido pelos outros

Sem surpresas, direto

Mínimo, sem dependências

Feito para o mundo real, bom tratamento de erros

Coeso

Feito com cuidado

O que é um código limpo?

Sintomas de código ruim

Medo de efetuar mudanças

Confusão por não estar claro

Frustração pelo tempo perdido

Raiva por quem fez algo tao depreciável

Problemas

Dificuldade em corrigirproblemas

Perda de desempenho/produtividade do time

Em casos críticos, abandono do projeto

“Honestidade nas pequenas coisasnão é algo pequeno” – Ditadodinamarquês

“Deus está nos detalhes” –Arquiteto van der Rohe

Pequenas coisas importam

Nomes são importantissimos em software

Variáveis, funções, argumentos, classes, pacotes, etc

Boa parte do tempo estamos escolhendo nomesdurante a programação – devemos escolher BEM

Todo nome deve transparecer:

Seu objetivo (por que existe?)

Qua sua tarefa (O que faz)

Como é usado

Escolhendo nomes

Nomes devem sempre revelar a intenção

Se um nome requer um comentário explicando, entãoprovavelmente não é um bom nome

Nomes reveladores

Que nomes representariam melhor?

Exemplo – Flagged cells

Exemplo – Flagged cells

Exemplo – Flagged cells

Evite usar palavras-chave de outras linguages (ex: shell do unix)

Evite usar classes no nome das variaveis, se nao foremde tal classe (ex: list)

Evite usar nomes muito parecidos

Evite desinformação

Evite números em série

Faça distinções reais

Qual a diferença entre essas funções?

Se você nao consegue ler uma variável sem soletrar, provavelmente não é um bom nome (xpto, abc, etc..)

Nomes pronunciáveis

pegarOBeco(); ou sair(); ?

exterminate(); ou kill(); ?

Em geral, nomes como esses só tem signicadodurante um curto periodo de tempo

Evite piadas e gírias

Classes devem SEMPRE ser substantivo: Car, Person, LoginView, etc.

Métodos devem SEMPRE ser verbos

Uma boa prática é prefixar em ‘get’, ‘set’ e ‘is’ parametodos de acesso. Essa padrão pode variardependendo da linguagem.

Ao sobrescrever construtores, metódos factory estáticos com descricao dos argumentos éinteressante.

Classes e métodos/funções

Tamanho:

Regra 1: funções devem ser pequenas

Regra2: devem ser menores ainda

Blocos if, else, while: devem conter apenas 1 linha, com a chamada para outro metodo. Eviteaninhamento de blocos

Funções

Faça apenas uma coisa – tente extrair um pedaço do método e pensar em outro nome

Tenha apenas um nível de abstração

Ideia prática: prefixo TO

Funções Atômicas

Uma função deve, apenas:

Fazer algo

Responder algo

Separação de objetivo

Evite duplicação de código

Um código reescrito três vezes representa três pontos de mudança no futuro

E três oportunidades de falha

Lembre-se: programação estruturada, orientada a aspectos, componentes e objetos são estratégias para eliminar duplicação

DRY – Don’t repeat yourself

Prefira lançar exceções a retornar “error code” – se a linguagem der suporte

Erros

Existem muitas técnicas para escrever um bomcódigo

Aplicar essas técnicas exigem tempo, treino e paciência, mas o ganho de produtividade no futurocompensa

Não tenha medo de refatorar

Conclusão