Slide 1

Slide 1 text

Código Limpo

Slide 2

Slide 2 text

Roger Albino

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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 .

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

• 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

Slide 10

Slide 10 text

Código limpo (clean code)

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Um bom código realmente importa?

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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;

Slide 20

Slide 20 text

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.

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Jogar tudo fora e começar de novo

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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;

Slide 27

Slide 27 text

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;

Slide 28

Slide 28 text

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;

Slide 29

Slide 29 text

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;

Slide 30

Slide 30 text

Tá funcionando? Não mexe!

Slide 31

Slide 31 text

Tá funcionando? Não mexe!

Slide 32

Slide 32 text

O que é um código bom?

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Nomes

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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.

Slide 39

Slide 39 text

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.

Slide 40

Slide 40 text

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.

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

Nomes • Evite dicas erradas const productData const productInfo

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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)

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Funções

Slide 53

Slide 53 text

Funções • Devem ser pequenas;

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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)

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

Funções

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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)

Slide 61

Slide 61 text

Comentários

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

Formatação

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

Regra de escoteiro

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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”

Slide 74

Slide 74 text

Tem muito mais…

Slide 75

Slide 75 text

Obrigado! @rogeralbinoi