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

Boas práticas para organização de códigos e projetos no R

Italo Cegatta
September 09, 2021

Boas práticas para organização de códigos e projetos no R

Apresentação feita no 3º R Day - Encontro Nacional de Usuários do R.

Italo Cegatta

September 09, 2021
Tweet

More Decks by Italo Cegatta

Other Decks in Programming

Transcript

  1. Alcance o impensável Boas práticas para organização de códigos e

    projetos no R 3º R Day Setembro 2021 Ítalo Cegatta Cientista de Dados | Suzano
  2. Suzano DigitalTech | Alcance o impensável Suzano DigitalTech | Alcance

    o impensável 9 anos programando em R 5 anos como Pesquisador Florestal Engenheiro Florestal Sobre mim ... Cientista de dados https://italocegatta.github.io
  3. Suzano DigitalTech | Alcance o impensável O QUE FAZEMOS? Desenvolvimento

    de projetos Disseminação da cultura digital Núcleo Digital ▪ Ciência e engenharia de dados ▪ Desafios complexos de negócio ▪ Machine learning ▪ Otimização Agilidade ▪ Suzano ágil ▪ Equipes colaborativas ▪ Objetivos e propósitos únicos ▪ Estratégia interconectada Inovação Aberta ▪ Conexão ao ecossistema ▪ Democratizar a inovação ▪ Parceria com startups Design ▪ Abordagens do Design ▪ Soluções inovadoras ▪ Empatia & foco no cliente ▪ Colaboração e experimentação Estratégia e Governança
  4. Suzano DigitalTech | Alcance o impensável Resolva nosso Case E

    venha fazer parte dessa transformação http://bit.ly/sejasuzano
  5. Suzano DigitalTech | Alcance o impensável Suzano DigitalTech | Alcance

    o impensável “When writing code, you’re always collaborating with future-you; and past-you doesn’t respond to emails” Hadley Wickham Por que boas práticas?
  6. SOBRE O QUE IREMOS FALAR HOJE? Organização de Pastas Organização

    de Arquivos Setup do Projeto Organização do Código Suzano DigitalTech | Alcance o impensável
  7. SETUP DO PROJETO CADA PROJETO EM UMA PASTA Defina um

    estilo e seja feliz Suzano DigitalTech | Alcance o impensável
  8. SETUP DO PROJETO RSTUDIO PROJECTS Suzano DigitalTech | Alcance o

    impensável Nunca mais setwd("~/projeto_x")
  9. SETUP DO PROJETO SETUP OBRIGATÓRIO Suzano DigitalTech | Alcance o

    impensável Nunca mais rm(list=ls()) Configure desta forma
  10. Organização de Pastas UM EXEMPLO DA ORGANIZAÇÃO DAS PRINCIPAIS PASTAS

    Suzano DigitalTech | Alcance o impensável Projetos com controle de versão Dados só na tua máquina Projetos compartilhados com a equipe
  11. Organização de Pastas O IDEIAL É QUE TODOS DA EQUIPE

    USEM A MESMA ESTRUTURA Suzano DigitalTech | Alcance o impensável Bases comuns entre projetos Versionamento de códigos. Preferência só pacotes, sem dados. Use “../../dados/” para acessar as bases
  12. Organização de Pastas EXEMPLO DAS PASTAS DE UM PROJETO Suzano

    DigitalTech | Alcance o impensável Defina um estilo e seja feliz
  13. ORGANIZAÇÃO DE ARQUIVOS PELO SEU BEM E DO SEU TIME,

    NÃO FAÇA ISSO Suzano DigitalTech | Alcance o impensável Não fique bravo com o colega. Provavelmente você faz ou já fez isso no passado. O discípulo do professor Pasquale O bagunçado
  14. ORGANIZAÇÃO DE ARQUIVOS SIGAM A JENNY (@jennybryan), ELA É ÓTIMA!

    Suzano DigitalTech | Alcance o impensável https://github.com/jennybc/rr-organization1/tree/master/slides/naming-slides
  15. ORGANIZAÇÃO DE ARQUIVOS PRINCÍPIOS PARA NOMES DE ARQUIVOS Suzano DigitalTech

    | Alcance o impensável Máquina Humano Ordenação
  16. ORGANIZAÇÃO DE ARQUIVOS DICAS Suzano DigitalTech | Alcance o impensável

    • Evite espaços, acentos e caracteres especiais • Utilize “_” para contexto e “–” para palavras compostas • Seja consistente com letras maiúsculas ou minúsculas • Utilize sufixos e prefixos para facilitar leitura, ordenação e buscas • Cuidado com a ordenação de números, prefira 01, 02... ou 001, 002... • Datas sempre com ISO 8601 (aaaa-mm-dd)
  17. ORGANIZAÇÃO DE ARQUIVOS DICA BÔNUS!!!! Isso vale para as tabelas

    de Excel formatadas pelo Capiroto Suzano DigitalTech | Alcance o impensável Aplique todas estes padrões em nomes de variáveis das suas tabelas Planilha organizada pelo jovem Ítalo. Não faça isso!!
  18. ORGANIZAÇÃO DE ARQUIVOS POST “COLUMN NAMES AS CONTRACTS” - EMILY

    RIEDERER Suzano DigitalTech | Alcance o impensável https://emilyriederer.netlify.app/post/column-name-contracts
  19. ORGANIZAÇÃO DE ARQUIVOS MANUAL DE ESTILOS - BASE DOS DADOS

    Suzano DigitalTech | Alcance o impensável https://basedosdados.github.io/mais/style_data
  20. ORGANIZAÇÃO DO CÓDIGO MANUAL DE ESTILOS DO TIDYVERSE Suzano DigitalTech

    | Alcance o impensável https://style.tidyverse.org
  21. ORGANIZAÇÃO DO CÓDIGO INÍCIO DO CÓDIGO FEIJÃO COM ARROZ Suzano

    DigitalTech | Alcance o impensável Crie sessões (Ctrl + Shift + R) Chame os pacotes sempre no início Coloque as funções em um script separado Importe todas as bases logo no começo do script
  22. ORGANIZAÇÃO DO CÓDIGO CRIE PREFIXOS PARA OS OBJETOS Suzano DigitalTech

    | Alcance o impensável vec_** = vetor tab_** = data frame lst_** = lista mat_** = matriz rst_** = raster img_** = imagem ptn_** = pontos pol_** = polígonos (...)
  23. ORGANIZAÇÃO DO CÓDIGO IDENTAÇÃO É O MÍNIMO Suzano DigitalTech |

    Alcance o impensável Ajudinha para identar (Ctrl + Shift + A)
  24. ORGANIZAÇÃO DO CÓDIGO DICAS Suzano DigitalTech | Alcance o impensável

    • Se tem setwd(), rm(list=ls()) ou attach(), CUIDADO! • Comente o máximo possível. Seu eu-do-futuro vai agradecer • Use git para controle de versão sempre que possível • Crie um script para cada etapa do processo • Para projetos estáveis, considere transformar os scripts em um pacote
  25. Suzano DigitalTech | Alcance o impensável REFERÊNCIAS • https://github.com/jennybc/rr- organization1/tree/master/slides/naming-slides

    • https://emilyriederer.netlify.app/post/column-name-contracts • https://basedosdados.github.io/mais/style_data • https://style.tidyverse.org • https://italocegatta.github.io/o-conceito-tidy-data • https://speakerdeck.com/jennybc/code-smells-and-feels • https://www.tidyverse.org/blog/2017/12/workflow-vs-script • https://kdestasio.github.io/post/r_best_practices • https://www.datanovia.com/en/blog/r-coding-style-best- practices • https://chrisvoncsefalvay.com/2018/08/09/structuring-r-projects