Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Código Limpo - DevDay Fatec Mogi Mirim 2019

Código Limpo - DevDay Fatec Mogi Mirim 2019

Roger Albino

October 26, 2019
Tweet

More Decks by Roger Albino

Other Decks in Programming

Transcript

  1. Roger Albino • Engenheiro de Software e Líder Técnico de

    JavaScript na Kazap Tecnologia. • React, React Native, NodeJS, Graphql…
  2. Roger Albino • Engenheiro de Software e Líder Técnico de

    JavaScript na Kazap Tecnologia. • React, React Native, NodeJS, Graphql… • Sou músico
  3. Roger Albino • Engenheiro de Software e Líder Técnico de

    JavaScript na Kazap Tecnologia. • React, React Native, NodeJS, Graphql… • Sou músico • Curto uma cerveja .
  4. Roger Albino • Engenheiro de Software e Líder Técnico de

    JavaScript na Kazap Tecnologia. • React, React Native, NodeJS, Graphql… • Sou músico • Curto uma cerveja . • @rogeralbinoi
  5. Roger Albino • Engenheiro de Software e Líder Técnico de

    JavaScript na Kazap Tecnologia. • React, React Native, NodeJS, Graphql… • Sou músico • Curto uma cerveja . • @rogeralbinoi
  6. • Temos mais de 11 anos de mercado, hoje estamos

    no Reino Unido, Portugal e sede em Mogi Guaçu. • Nosso objetivo é facilitar a transformação digital nas organizações. • Desenvolvemos aplicações personalizadas para Web, Dispositivos moveis, interfaces conversacionais (Assistentes pessoais e Chatbots) • Ruby on Rails, JavaScript, Java, Python, machine learning… • www.kazap.com.br
  7. Código limpo (clean code) • Técnicas para escrever código bom

    • Livro por Robert C. Martin (Uncle Bob)
  8. Código limpo (clean code) • Técnicas para escrever código bom

    • Livro por Robert C. Martin (Uncle Bob)
  9. Código limpo (clean code) • Técnicas para escrever código bom

    • Livro por Robert C. Martin (Uncle Bob) • Clean code ou Código limpo
  10. Um bom código realmente importa? • Somos autores, uma boa

    comunicação é nossa responsabilidade;
  11. Um bom código realmente importa? • Somos autores, uma boa

    comunicação é nossa responsabilidade; • Outras pessoas vão ler o seu código;
  12. Um bom código realmente importa? • Somos autores, uma boa

    comunicação é nossa responsabilidade; • Outras pessoas vão ler o seu código; • Você também (em um futuro não tão distante);
  13. Um bom código realmente importa? • Somos autores, uma boa

    comunicação é nossa responsabilidade; • Outras pessoas vão ler o seu código; • Você também (em um futuro não tão distante); • Passamos mais tempo dando manutenção em código existente;
  14. Um bom código realmente importa? • Somos autores, uma boa

    comunicação é nossa responsabilidade; • Outras pessoas vão ler o seu código; • Você também (em um futuro não tão distante); • Passamos mais tempo dando manutenção em código existente; • Perdemos horas e recursos importantes devido a um código mal escrito.
  15. Um código ruim reduz a produtividade do time com passar

    do tempo 0 25 50 75 100 Tempo Produtividade
  16. Jogar tudo fora e começar de novo • Galera não

    aguenta mais trabalhar neste código confuso (produtividade lá em baixo);
  17. Jogar tudo fora e começar de novo • Galera não

    aguenta mais trabalhar neste código confuso (produtividade lá em baixo); • Resolvem começar o projeto do zero;
  18. Jogar tudo fora e começar de novo • Galera não

    aguenta mais trabalhar neste código confuso (produtividade lá em baixo); • Resolvem começar o projeto do zero; • Mas o projeto que já existe deve ser mantido;
  19. Jogar tudo fora e começar de novo • Galera não

    aguenta mais trabalhar neste código confuso (produtividade lá em baixo); • Resolvem começar o projeto do zero; • Mas o projeto que já existe deve ser mantido; • Logo essa nova versão também está cheia de código ruim e precisaremos começar tudo do zero de novo;
  20. Jogar tudo fora e começar de novo • Galera não

    aguenta mais trabalhar neste código confuso (produtividade lá em baixo); • Resolvem começar o projeto do zero; • Mas o projeto que já existe deve ser mantido; • Logo essa nova versão também está cheia de código ruim e precisaremos começar tudo do zero de novo;
  21. Nomes • Nomeamos coisas o tempo todo (variáveis, funções, parâmetros,

    classes, pacotes); • Escolha nomes que revelem seu propósito
  22. Nomes • Nomeamos coisas o tempo todo (variáveis, funções, parâmetros,

    classes, pacotes); • Escolha nomes que revelem seu propósito • Escolher bons nomes leva tempo, mas economiza um tempão no futuro.
  23. Nomes • Nomeamos coisas o tempo todo (variáveis, funções, parâmetros,

    classes, pacotes); • Escolha nomes que revelem seu propósito • Escolher bons nomes leva tempo, mas economiza um tempão no futuro. • Quando encontrar nomes melhores, troque-os.
  24. Nomes • Nomeamos coisas o tempo todo (variáveis, funções, parâmetros,

    classes, pacotes); • Escolha nomes que revelem seu propósito • Escolher bons nomes leva tempo, mas economiza um tempão no futuro. • Quando encontrar nomes melhores, troque-os.
  25. Nomes • Evite dicas erradas const accountList = { items:

    [{ _id: 1, name: 'Foo Bar' }], total: 1 }
  26. Nomes • Evite dicas erradas function foo (a, O, l)

    { if (a === O) { return 'é igual O’ } if (l === 1) { return 'é igual a zero' } }
  27. Nomes • Evite dicas erradas • Evite Siglas a menos

    que todos conheçam (API por exemplo)
  28. Nomes • Evite dicas erradas • Evite Siglas a menos

    que todos conheçam (API por exemplo) • Evite usar apenas uma letra (x, y, z, a, b ,c)
  29. Nomes • Evite dicas erradas • Evite Siglas a menos

    que todos conheçam (API por exemplo) • Evite usar apenas uma letra (x, y, z, a, b ,c) • Evite usar termos que poucas pessoas conheçam
  30. Nomes • Evite dicas erradas • Evite Siglas a menos

    que todos conheçam (API por exemplo) • Evite usar apenas uma letra (x, y, z, a, b ,c) • Evite usar termos que poucas pessoas conheçam • Crie nomes buscáveis
  31. Nomes • Evite dicas erradas • Evite Siglas a menos

    que todos conheçam (API por exemplo) • Evite usar apenas uma letra (x, y, z, a, b ,c) • Evite usar termos que poucas pessoas conheçam • Crie nomes buscáveis • Crie nomes pronunciáveis
  32. Funções • Devem ser pequenas; • Ter apenas uma responsabilidade

    (Fazer apenas uma coisa); • Blocos de indentação (if, else, while), devem ter apenas uma linha (possivelmente uma chamada de função);
  33. Funções • Devem ser pequenas; • Ter apenas uma responsabilidade

    (Fazer apenas uma coisa); • Blocos de indentação (if, else, while), devem ter apenas uma linha (possivelmente uma chamada de função); • Se você pode extrair uma função do nome dela, faça isso! (Ex: calculaTotalEGeraBoleto)
  34. Funções • Devem ser pequenas; • Ter apenas uma responsabilidade

    (Fazer apenas uma coisa); • Blocos de indentação (if, else, while), devem ter apenas uma linha (possivelmente uma chamada de função); • Se você pode extrair uma função do nome dela, faça isso! (Ex: calculaTotalEGeraBoleto) • Devemos ler o código de cima para baixo
  35. Funções • Evitar Switch case (mas se for faze-lo, apenas

    uma linha por caso, chamando uma função)
  36. Funções • Evitar Switch case (mas se for faze-lo, apenas

    uma linha por caso, chamando uma função) • Não tenha medo de criar nomes grandes (O nome da função deve descrever o que ela faz)
  37. Comentários • Comentários mentem, código não! • Comente o necessário

    • Não insira comentários num código ruim, reescreva-o
  38. Formatação • Crie um padrão ou use padrões já conhecidos;

    • Indentação, ponto e virgula, aspas duplas ou aspas simples…
  39. Formatação • Crie um padrão ou use padrões já conhecidos;

    • Indentação, ponto e virgula, aspas duplas ou aspas simples… • Use ferramentas que te avisam sobre problemas de formatação (ou que corrijam isso para você, prettier estou olhando para você).
  40. Regra de escoteiro • Um código bom deve ser mantido

    • Devemos previnir código ruim
  41. Regra de escoteiro • Um código bom deve ser mantido

    • Devemos previnir código ruim • "Deixe a área mais limpa do que como você a encontrou”