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 Slide

  2. Roger Albino

    View Slide

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

    View Slide

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

    View 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 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 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 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 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 Slide

  10. Código limpo (clean code)

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 Slide

  15. Um bom código realmente importa?

    View Slide

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

    View 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 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 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 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 Slide

  21. View Slide

  22. View Slide

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

    View Slide

  24. Jogar tudo fora e começar de novo

    View Slide

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

    View 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;

    View 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;

    View Slide

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

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

  30. Tá funcionando? Não mexe!

    View Slide

  31. Tá funcionando? Não mexe!

    View Slide

  32. O que é um código bom?

    View Slide

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

    View Slide

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

    View Slide

  35. Nomes

    View Slide

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

    View Slide

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

    View Slide

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

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

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

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

    View Slide

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

    View Slide

  43. Nomes
    • Evite dicas erradas
    const productData
    const productInfo

    View Slide

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

    View 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)

    View Slide

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

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

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

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

    View Slide

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

    View Slide

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

    View Slide

  52. Funções

    View Slide

  53. Funções
    • Devem ser pequenas;

    View Slide

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

    View Slide

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

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

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

  58. Funções

    View Slide

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

    View Slide

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

  61. Comentários

    View Slide

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

    View Slide

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

    View Slide

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

  65. Formatação

    View Slide

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

    View Slide

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

    View Slide

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

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

    View Slide

  70. Regra de escoteiro

    View Slide

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

    View Slide

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

    View Slide

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

  74. Tem muito mais…

    View Slide

  75. Obrigado!
    @rogeralbinoi

    View Slide