• Save
Boas práticas técnica para um código limpo (Clean Code)
Upcoming SlideShare
Loading in...5
×
 

Boas práticas técnica para um código limpo (Clean Code)

on

  • 3,288 views

Código que simplesmente “funciona” não é suficiente, infelizmente. Código que tem valor real e é duradouro, tem de ser “limpo”! Esta track irá abordar um pouco sobre as técnicas de ...

Código que simplesmente “funciona” não é suficiente, infelizmente. Código que tem valor real e é duradouro, tem de ser “limpo”! Esta track irá abordar um pouco sobre as técnicas de Clean Code, o que é um código limpo, quais suas características e como transformar seu código ruim em um código claro e legível. Atitudes que afetam nosso comportamento como desenvolvedor e que, sem dúvidas, transformam a maneira de como desenvolvemos software.

Statistics

Views

Total Views
3,288
Views on SlideShare
2,989
Embed Views
299

Actions

Likes
9
Downloads
0
Comments
0

4 Embeds 299

http://www.rodrigokono.net 246
http://flavors.me 27
http://rodrigokono.flavors.me 14
http://feeds.feedburner.com 12

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Boas práticas técnica para um código limpo (Clean Code) Boas práticas técnica para um código limpo (Clean Code) Presentation Transcript

  • Boas PráticasClean CodeTécnica para um código limpoRodrigo KonoMVP, MCTS, MCPD, MCT, MCP@rodrigokonowww.rodrigokono.net
  • Rodrigo Kono• MVP Microsoft• MCP – MCTS – MCPD – MCT• Foco em desenvolvimento WEB• Developer na LG Sistemas• Fundador do DevGoiás.NET• Dez anos de comunidade .NET• Palestrou em mais de 12 capitais• Mais de 14.500 pessoas nesse tempo• Finalista Imagine Cup 2005 – Brasil/Japão
  • E ao meu lado hoje...Frederico Maia Arantes• 5 anos de experiência em Desenvolvimento de Software.• 3 anos de experiência em Desenvolvimento Java.• 2 anos de experiência como instrutor de treinamentos.• Membro e coordenador do Grupo de Usuários Java de Goiás (Gojava)..
  • Há duas razões pelas quaisvocê está nesta palestra:1. Você é um programador2. Deseja se tornar um ainda melhor.
  • ÓTIMO! PRECISAMOS DE PROGRAMADORES MELHORES C. Martin Robert
  • The Clean CoderRobert C. Martin (Uncle Bob); Programador desde 1970;Fundador e Presidente Object Mentor Inc.Livros:Designing Object-Oriented C++ Applications using the Booch Method. 1995.Agile Software Development: Principles, Patterns and Practices. 2002.Clean Code: A Handbook of Agile Software Craftsmanship.
  • O que é Clean Code?
  • • Eficiente• Simples• Direto ao ponto• Mínimas dependências• Sem duplicação• Fácil manutenção• Padrões definidos• Fácil leitura e entendimento• Coberto de testes• Elegante Síndrome da janela quebrada
  • Que porta representa o seu código?
  • "Qualquer um consegue escrever código que um computador entende. Bons programadores escrevem código que humanos endentem“ Martin Fowler
  • Funcionar é o mínimo que se espera
  • Ah! Mas o cronograma éapertado.Não tenho tempo parafrescura!Meu chefe está mepressionando!Quero mostrarprodutividade.
  • Filho feio não tem pai!
  • Afinal, de quem é a culpa?
  • É nossa!
  • Como mensurar aqualidade de um código?
  • OK! Vamos ao que interessa
  • NOMESSIGNIFICATIVOS
  • Nomes significativos int d; // tempo transcorrido em dias int tempoTranscorridoEmDias; int diasDesdeCriacaoDoArquivo; int diasDesdeModificacaoDoArquivo; int idadeDoArquivoEmDias;
  • Use nomes que revelem a intenção
  • Nomes significativos public List<int> obter() public List<int> obtemDiasMarcados() { { int[] x = new int[3]; int[] diaMarcado = new int[3]; List<int> lista1 = new List<int>(); List<int> diasMarcados = new List<int>(); for (int i = 0; i < lista; i++) for (int dia = 0; dia < mes; dia++) { { if (x[0] == 4) if (diaMarcado[STATUS] == MARCADO) { { lista1.Add(x[0]); diasMarcados.Add(diaMarcado[STATUS]); } } } } return lista1; return diasMarcados; } }
  • Nomes significativos public List<int> obtemDiasMarcados() { int[] diaMarcado = new int[3]; List<Dia> diasMarcados = new List<Dia>(); foreach (Dia dia in mes) { if (dia.marcado) { diasMarcados.Add(dia); } } return diasMarcados; }
  • Use nomespronunciáveis
  • Nomes significativos class DtaRcrd102 { private DateTime gerdmahms; private DateTime moddmahms; private string pszqint = "102"; } class Cliente { private DateTime gerarDataHora; private DateTime modificarDataHora; private string idRegistro = "102"; }
  • Use nomes buscáveis
  • Nomes significativos for (int j = 0; j < 30; j++) { s = (t[j]*4)/5; } const int DIAS_DE_TRABALHO_POR_SEMANA = 5; int soma = 0; int diasReaisDeTrabalho = 4; for (int j = 0; j < NUMERO_DE_TAREFAS; j++) { int tarefasPorDia = trabalhoEstimado[j] * diasReaisDetrabalho; int taredasPorSemana = (dias / DIAS_DE_TRABALHO_POR_SEMANA); soma += taredasPorSemana; }
  • Nomeando classes e métodos
  • Nomes significativosClasses representadas por substantivos ex: Cliente, Perfil, Estoque, etcMétodos representadas por verbos ou frasesverbais ex: enviarPagamento, salvar, etc.
  • FUNÇÕES
  • Seja pequeno
  • Funções• Menos é mais!• Extraia trechos em métodos privados.• Lembre-se dos nomes significativos• Vá direto ao ponto.
  • Funções
  • Faça uma coisa só!
  • Funções• Repare a endentação (sim, é assim que escreve)• Muitos níveis ~= muita responsabilidade• O método deve fazer uma única coisa, e bem!• Está fazendo mais de uma coisa? Extraia.
  • Leia o código de cima pra baixo
  • Funções• Seu código deve ser lido como uma narrativa• Temos sujeitos, verbos e predicados• Narrativas são frases em ordem coerente• Lembre-se disto ao extrair em métodos privados;
  • Funções• Muitos argumentos = code smell• Existem algumas regras para a quantidade de argumentos• Argumentos booleanos, em geral, não são bons.
  • Funções
  • DRY (Don’t Repeat Yourself)
  • COMENTÁRIOS
  • Comentários não ajudam um código sujo!
  • Comentários• Em geral, servem para explicar um código ruim.• Um bom código é auto-documentado.• Extraia para um método que faça o que diz!
  • Comentários aceitáveis
  • Comentários• Comentários sobre licença (direitos de uso de uma lib, por exemplo)• Comentários informativos• Necessidade de explicação de negócio
  • Comentários ruins
  • Comentários• Por falta do que escrever• Redundantes• Documentação em APIs não públicas• Dizendo algo que o próprio código deveria dizer• Código comentado =S
  • Comentários
  • FORMATAÇÃO
  • O que vale é a regra do time
  • OBJETOS E ESTRUTURA DE DADOS
  • Abstração de dados
  • Objetos e estrutura de dados
  • Objetos e estrutura de dados
  • A lei de Demeter
  • Objetos e estrutura de dadosUm método F de uma classe C só conhece:• Métodos de C• Objetos criados por F• Objetos passados como argumentos para F• Objetos em variáveis de instâncias de C
  • TRATAMENTO DE ERRO
  • Exceções ao invés de código de erro.
  • Tratamento de erro
  • Tratamento de erro
  • Tratamento de exceção é uma dascoisas que um método ou função faz
  • Não use exceções genéricas
  • Não retorne null
  • Tratamento de erro• Obriga o uso de if• Pode dispara NullPointerException• Considere: Lançar exceção ou retornar um objeto especial
  • Não passe null
  • REGRA DOS ESCOTEIROSDeixe a área do acampamentomais limpa do que como você aEncontrou.
  • Não deixe acumular problemas!
  • Código ruimcheira mal...Torna o seutrabalho lento edesgastante com opassar do tempoPode arruinar seuprojeto, carreira,empresa...Fique atento.
  • Falar é fácil! O desafio é criar um código de qualidade. Portanto, falar é o primeiro passo de melhoria.
  • Using References;Gustavo Barbosahttp://www.slideshare.net/gustavocsbHendrik Ebelhttp://www.slideshare.net/hebelThiago Faria de Andradehttp://www.slideshare.net/thiagofa
  • END