Slide 1

Slide 1 text

Clean Code (Código limpo) Dicas para escrever código manutenível.

Slide 2

Slide 2 text

Roger Albino - Desenvolvedor há 8 anos - Trabalhei na Kazap como Engenheiro de Software - Desenvolvedor Front-end no Grupo Boticário - Mentor no Programa Desenvolve GB @rogeralbinoi - Twitter, GitHub, Speaker deck…

Slide 3

Slide 3 text

• Temos um grande desafio: construir o maior e melhor ecossistema de beleza do mundo. • Pra isso, em 2019 decidimos que o Grupo Boticário deveria se tornar líder em tecnologia e experiência. • Em um ano, dobramos de tamanho, e em 2021 dobraremos novamente.

Slide 4

Slide 4 text

Acesse grupoboticario.gupy.io/ e conheça as oportunidades! Que tal reinventar o futuro da beleza com a gente?

Slide 5

Slide 5 text

Código Limpo (Clean Code) Livro por Robert C.Martin (Uncle Bob) • Livro com ensinamentos para escrever código de qualidade. Imagem retirada de: https:/ /www.amazon.com.br/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM

Slide 6

Slide 6 text

• Eu já escrevi código ruim • Você vai escrever muito código ruim ainda… • Tá tudo bem! • Faz parte do aprendizado Se você está começando… Não se assuste!

Slide 7

Slide 7 text

O que é um código bom?

Slide 8

Slide 8 text

• Mas que diabos é isso? • Nossa, mas que diabos é isso? • Mas que diabos é isso? • Cara, mas que diabos é isso? • Nossa, mas que diabos é isso? • Ahn… que diabos é isso? • Mas que diabos é isso? Porta da esquerda (Código bom) Porta da direita (Código ruim) A única mensuração válida para qualidade de código: Mas que diabos é isso / minuto.

Slide 9

Slide 9 text

Saber o que é um código bom não te faz escrever um código bom. O Nascimento de Vênus (1484–1486), Sandro Botticelli - Imagem retirada de: https:/ /www.revistabula.com/12033-as-10-obras-de-arte-mais-famosas-da-historia/

Slide 10

Slide 10 text

Um Código bom realmente importa? Se tá funcionando já tá bom não tá?

Slide 11

Slide 11 text

Um código bom realmente importa? • Somos autores, uma boa comunicação é nossa responsabilidade • Outras pessoas vão ler o seu código • Você também vai ter que ler o seu código • Passamos a maior parte do tempo dando manutenção em código existente • Perdemos horas e recursos importantes devido a um código mal escrito

Slide 12

Slide 12 text

Produtividade / Tempo decorrido do projeto Produtividade 0 25 50 75 100 Tempo decorrido do projeto Abril Maio Junho Julho Agosto Um código ruim reduz a produtividade do time com o passar do tempo.

Slide 13

Slide 13 text

Na real você tá queimando dinheiro!

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Dar nomes é muito difícil

Slide 16

Slide 16 text

• Use nomes que revelem o seu propósito Nomes

Slide 17

Slide 17 text

• Use nomes que revelem o seu propósito • Evite dicas erradas Nomes

Slide 18

Slide 18 text

Nomes • Use nomes que revelem o seu propósito • Evite dicas erradas

Slide 19

Slide 19 text

Nomes • Use nomes que revelem o seu propósito • Evite dicas erradas • Evite números mágicos

Slide 20

Slide 20 text

Nomes • Use nomes que revelem o seu propósito • Evite dicas erradas • Evite números mágicos • Evite usar apenas letras (x, y, z, a, b, c)

Slide 21

Slide 21 text

Nomes • Use nomes que revelem o seu propósito • Evite dicas erradas • Evite números mágicos • Evite usar apenas letras (x, y, z, a, b, c) • Evite siglas e abreviações (a menos que todos conheçam tipo API)

Slide 22

Slide 22 text

Nomes • Evite contexto desnecessário

Slide 23

Slide 23 text

Nomes • Evite contexto desnecessário • Evite números mágicos

Slide 24

Slide 24 text

Nomes • Evite contexto desnecessário • Evite números mágicos • Crie nomes buscáveis e pronunciáveis

Slide 25

Slide 25 text

Classes • Nome de classes: Substantivos (Account, Cart, Shipping) • Nome de Métodos: Verbos (addItem, removeItem, getProductList)

Slide 26

Slide 26 text

Funções / Métodos • Devem ter apenas uma responsábilidade (Fazer apenas uma coisa)

Slide 27

Slide 27 text

Funções / Métodos • Devem ter apenas uma responsábilidade (Fazer apenas uma coisa) • Devem ser pequenas (Se a função está grande, talvez ela esteja fazendo mais do que deveria)

Slide 28

Slide 28 text

Funções / Métodos • Blocos de identação (if, else, while), devem ter apenas uma linha (possivelmente chamando outra função)

Slide 29

Slide 29 text

Funções / Métodos • Blocos de identação (if, else, while), devem ter apenas uma linha (possivelmente chamando outra função) • Não tenha medo de criar nomes grandes (o nome da função deve descrever o que ela faz)

Slide 30

Slide 30 text

Funções / Métodos • Evite listas grandes de parâmetros (mais que dois já é muito)

Slide 31

Slide 31 text

Funções / Métodos • Evite listas grandes de parâmetros (mais que dois já é muito)

Slide 32

Slide 32 text

Funções / Métodos • Evite código duplicado

Slide 33

Slide 33 text

Funções / Métodos • Evite código duplicado

Slide 34

Slide 34 text

Formatação

Slide 35

Slide 35 text

Formatação

Slide 36

Slide 36 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 37

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

Slide 38 text

E muito mais…

Slide 39

Slide 39 text

Dicas de leitura • Clean Code (Código limpo) • Clean Architecture (Arquitetura limpa) • Design Patterns (Padrões de projeto) • Refactoring (Refatoração)

Slide 40

Slide 40 text

Obrigado. @rogeralbinoi (Twitter, GitHub, Speaker Deck…)