Skip to content

thassis/exploring-code-evolution

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 

Repository files navigation

Explorando evolução de código

Neste exercício, iremos explorar a evolução de código em sistemas reais.

Iremos utilizar a ferramenta GitEvo. Essa ferramenta analisa a evolução de código em repositórios Git nas seguintes linguagens: Python, JavaScript, TypeScript e Java.

Você deve submeter via Moodle apenas o link do seu fork, conforme descrito abaixo.

Passo 1: Selecionar repositório a ser analisado

Selecione um repositório relevante na linguagem de sua preferência (Python, JavaScript, TypeScript ou Java). Você pode encontrar projetos interessantes nos links abaixo:

Passo 2: Instalar e rodar a ferramenta GitEvo

Instale a ferramenta GitEvo com o comando:

pip install gitevo

Rode a ferramenta no repositório selecionado através do seguinte comando (dependendo da linguagem do projeto que escolheu):

# Python
$ gitevo -r python <git_url>

# JavaScript
$ gitevo -r js <git_url>

# TypeScript
$ gitevo -r ts <git_url>

# Java
$ gitevo -r java <git_url>

Onde <git_url> é URL do repositório a ser analisado. Por exemplo, para analisar o projeto Flask escrito em Python:

$ gitevo -r python https://github.com/pallets/flask

Passo 3: Explorar os gráficos de evolução de código (index.html)

Ao rodar a ferramenta GitEvo, o arquivo index.html é gerado com diversos gráficos de evolução de código.

Abra o arquivo index.html e observe com atenção os gráficos gerados.

Passo 4: Explicar um gráfico de evolução de código

Selecione um dos gráficos de evolução e explique-o com suas palavras. Por exemplo, você pode:

  • Detalhar a evolução ao longo do tempo,
  • Detalhar se as curvas estão de acordo com boas práticas,
  • Explicar grandes alterações nas curvas,
  • Explorar a documentação do repositório em busca de explicações para grandes alterações
  • Etc.

Seja criativo!

Exercício

Para responder este exercício, primeiramente, você deve fazer um fork deste repositório. No Moodle, você deve submeter apenas a URL do seu fork.

Em seguida, adicione o arquivo gerado index.html no seu fork.

Por fim, responda as questões abaixo no seu fork:

  1. Repositório selecionado: https://github.com/expo/expo

  2. Gráfico selecionado: classes, interfaces, and type aliases

  3. Explicação:

O gráfico mostra que o uso de type aliases (type) cresceu muito ao longo do tempo, o que indica uma mudança interessante no estilo de desenvolvimento do projeto. Em vez de seguir uma abordagem mais tradicional e orientada a objetos, comum em outras linguagens como Java que faz uso intenso de class e interface, esse projeto em TypeScript está caminhando para um modelo mais funcional e declarativo.

Além disso, este projeto (Expo) está dentro do ecossistema do React Native. Desde 2019, o React recomenda oficialmente o uso de Hooks no lugar de class components. Por isso, é natural que classes e interfaces não sejam tão frequentes em projetos que seguem essas diretrizes. Nesse contexto, type aliases (do TypeScript) fazem mais sentido, pois se integram melhor a uma estrutura baseada em funções, demonstrando que o projeto está alinhado com as práticas modernas do React, priorizando a abordagem funcional em vez da orientação a objetos tradicional.

Isso não significa que OOP seja ruim, mas no caso específico do React (e especialmente com TypeScript), ela pode ser menos vantajosa do que em outras linguagens ou frameworks mais orientados a objetos por padrão.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 100.0%