Como os códigos de análises em ecologia, junto com os dados, se tornaram também um produto do projeto de pesquisa, boas práticas devem levar em conta a revisão não só da publicação científica, mas também do código de análises.
Nesta aula discutimos a revisão de código com um olhar sobre códigos de análises de dados, suas vantagens e também formas de incentivar e fomentar esta prática dentro dos grupos de pesquisa.
Geralmente, vamos revisar um repositório/código que está associado a uma publicação científica, ou que pelo menos, você conhece o projeto e tem mais informações sobre. Logo, esta ideia de revisão de repositório tem algumas diferenças dos padrões formais de revisão de código para desenvolvedores e outros profissionais da área de programação.
PROBLEMA:
CONSEQUÊNCIA:
SOLUÇÃO:
IMPEDIMENTO:
Vantagens da revisão do seu código de análise (Lee & Foster-Marks, 2024):
Aumentar qualidade do código:
Aumentar benefícios sociocognitivos da equipe/grupo/laboratório a longo prazo:
Trazer mudança na cultura da pesquisa!
Culina et al. (2020) mostraram que 75% das revistas em Ecologia e Evolução contém políticas obrigatórias de compartilhamento de código e dados, apesar de que as políticas de compartilhamento de código não serem seguidas pela maioria dos autores (27% dos artigos).
Quando realizar a revisão do código/repositório de análise?
Pré-publicação
Durante publicação / submissão
Pós-publicação
Ajude o revisor a te ajudar!
Mesmo que o código seja executado por máquina, ele também vai ser lido por humanos! Clareza, limpeza, estética consistente vão tornar a leitura mais fácil e também mais “barato” de se fazer ou propor modificações.
Eu acredito na criação do hábito de escrever desde o início códigos sempre pensnado que alguém (um estranho ou mesmo você no futuro) vai revisá-lo. Resista à tentação de achar que vai organizar o código depois que fizer todas as análises! Por isso a importância de se incorporar hábitos e dicas para escrita de código bonito, limpo e organizado.
Estilo de código é um conjunto de regras sobre sobre estética (alinhamento e espaçamento do código), nomenclatura (de variáveis, funções etc.), comentários, estruturação (por exemplo, evitar lógica complexa) etc. Essas regras ajudam a melhorar a clareza do código e a colaboração.
Ao longo da escrita do código, é saudável fazer uma pausa de vez em quando e revisar o estilo de escrita e o padrão de organização que você adotou no início e ver se você manteve ou não a consistência ao longo do tempo. É muito fácil começar adotanto uma padronização e terminar com outra diferente, principalmente se o código está sendo escrito ao longo de meses. Mas existem ferramentas para fazer isso de forma mais automatizada e rápida!
Existem vários estilos de escrita de código, e várias dicas por aí
para seguir ou adaptar ao seu gosto. Alguns dos mais usados são o estilo
de escrita do tidyverse, que
tem o pacote R styler
que pode
ajustar seu código ao estilo usando um addin do Rstudio.
Outro pacote, além do styler
que ajuda a padronizar um
arquivo o pedaço de código a um estilo é o formatR
.
O pacote lintr
é muito útil para verificar o código
quanto ao estilo, erros de sinstaxe e semântica, mas não vai modificar o
arquivo por você. Ele faz um relatório de consistência do código
Veja algumas dicas beem gerais nesse e nesse roteiro para pensar e avaliar qual estilo de código você prefere seguir ou criar!
Comentários ao longo dos scripts explicando porquê você está fazendo certas coisas ajuda muito a guiar o revisor/leitor ao longo do código. Escrever código em Rmarkdown e/ou Quarto resolve essa necessidade de explicar o passo a passo das análises, pois você pode separar a parte de explicação (texto) da parte de código Roteiro aqui.
Em arquivos .R
você pode usar o bom e velho # para
escrever comentários ao longo do código. Porém, a ideia aqui é diferente
de um arquivo .Rmd ou .Qmd. Tenha cuidado com comentários demais que
podem distrair o revisor/leitor ou poluir o código. Neste caso, os
comentários no código devem ser pequenos alertas. Quanto mais
comentários houver, mais provável será que o leitor os ignore.
Os comentários de código não devem ser um “band-aid” para nomes ruins ou código excessivamente complexo: em vez de adicionar um comentário, você pode renomear uma variável ou refatorar um trecho de código?
Assista essa brilhante palestra “Code smell and feels” da rainha, Jenny Bryan, sobre estilo de código!
Lembre-se que há várias formas de se abordar um mesmo problema, o revisor não precisa impor sua forma. E cuidado para não impor estilo de escrita! Mas pode verificar inconsistências que venham a atrapalhar a leitura do código.
O que deve ser avaliado na revisão do código? Seguindo Ivimey-Cook et al. (2023), existem 3 tipos de erros em código:
conceitual – implementando a função ou argumento errado
programático – chamando o objeto ou coluna errada
sintático – grafia incorreta de um estado ou função
E eles propõem uma forma organizada de revisar o código seguindo 4 Rs (em inglês):
O código está como Reportado?
glm()
.O código Roda?
renv
, groundhog
O código é Confiável (Reliable)?
Os resultados são Reprodutíveis?
set.seed()
Baseado no checklist de revisão de código criado por Ivimey-Cook et al. (2023), nós elaboramos um arquivo de texto para guiar revisores de código:
Ajuda a criar uma cultura de revisão de código entre colegas
Incentivos para revisão:
Crie um grupo de revisão de código!!
Exemplo Peer Code Review group – SORTEE: https://github.com/SORTEE/peer-code-review/issues/8