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. Código Limpo

    View full-size slide

  2. Roger Albino

    View full-size slide

  3. Roger Albino
    • Engenheiro de Software e Líder Técnico de
    JavaScript na Kazap Tecnologia.

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. 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 .

    View full-size slide

  7. 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

    View full-size slide

  8. 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

    View full-size slide

  9. • 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

    View full-size slide

  10. Código limpo (clean code)

    View full-size slide

  11. Código limpo (clean code)
    • Técnicas para escrever código bom

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  14. 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

    View full-size slide

  15. Um bom código realmente importa?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  18. 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);

    View full-size slide

  19. 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;

    View full-size slide

  20. 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.

    View full-size slide

  21. Um código ruim reduz a produtividade
    do time com passar do tempo
    0
    25
    50
    75
    100
    Tempo
    Produtividade

    View full-size slide

  22. Jogar tudo fora e começar de novo

    View full-size slide

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

    View full-size slide

  24. 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;

    View full-size slide

  25. 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;

    View full-size slide

  26. 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;

    View full-size slide

  27. 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;

    View full-size slide

  28. Tá funcionando? Não mexe!

    View full-size slide

  29. Tá funcionando? Não mexe!

    View full-size slide

  30. O que é um código bom?

    View full-size slide

  31. https://www.osnews.com/story/19266/wtfsm/

    View full-size slide

  32. Saber o que é um código bom não te faz
    escrever um código bom.

    View full-size slide

  33. Nomes
    • Nomeamos coisas o tempo todo (variáveis, funções,
    parâmetros, classes, pacotes);

    View full-size slide

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

    View full-size slide

  35. 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.

    View full-size slide

  36. 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.

    View full-size slide

  37. 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.

    View full-size slide

  38. Nomes
    • Evite dicas erradas
    const accountList = {
    items: [{
    _id: 1,
    name: 'Foo Bar'
    }],
    total: 1
    }

    View full-size slide

  39. Nomes
    • Evite dicas erradas
    function foo (a, O, l) {
    if (a === O) {
    return 'é igual O’
    }
    if (l === 1) {
    return 'é igual a zero'
    }
    }

    View full-size slide

  40. Nomes
    • Evite dicas erradas
    const productData
    const productInfo

    View full-size slide

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

    View full-size slide

  42. 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)

    View full-size slide

  43. 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

    View full-size slide

  44. 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

    View full-size slide

  45. 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

    View full-size slide

  46. Nomes de Classes
    • Substantivo (Ex: Account, Cart, Shipping)

    View full-size slide

  47. Nomes de Métodos
    • Verbos (Ex: addItem, removeItem, getProductList)

    View full-size slide

  48. Evite usar a mesma palavra para dois propósitos
    no sistema.

    View full-size slide

  49. Funções
    • Devem ser pequenas;

    View full-size slide

  50. Funções
    • Devem ser pequenas;
    • Ter apenas uma responsabilidade (Fazer apenas uma
    coisa);

    View full-size slide

  51. 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);

    View full-size slide

  52. 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)

    View full-size slide

  53. 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

    View full-size slide

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

    View full-size slide

  55. 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)

    View full-size slide

  56. Comentários

    View full-size slide

  57. Comentários
    • Comentários mentem, código não!

    View full-size slide

  58. Comentários
    • Comentários mentem, código não!
    • Comente o necessário

    View full-size slide

  59. Comentários
    • Comentários mentem, código não!
    • Comente o necessário
    • Não insira comentários num código ruim, reescreva-o

    View full-size slide

  60. Formatação

    View full-size slide

  61. Formatação
    • Crie um padrão ou use padrões já conhecidos;

    View full-size slide

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

    View full-size slide

  63. 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ê).

    View full-size slide

  64. DRY (Don’t repeat yourself) (Não repita-se a si mesmo)

    View full-size slide

  65. Regra de escoteiro

    View full-size slide

  66. Regra de escoteiro
    • Um código bom deve ser mantido

    View full-size slide

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

    View full-size slide

  68. 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”

    View full-size slide

  69. Tem muito mais…

    View full-size slide

  70. Obrigado!
    @rogeralbinoi

    View full-size slide