Disclaimer
Este texto foi concebido pela IA Generativa em função da transcrição do episódio do nosso canal, Dev Eficiente. O episódio completo pode ser visto no canal.
Introdução
Neste post eu quero mostrar para você um exemplo prático do processo de entendimento de um código legado. Imagine que você acabou de chegar em uma empresa nova, que tem um código legado consideravelmente complexo, e você agora precisa entender esse código para começar a fazer suas atividades no dia a dia. Como fazer?
A Teoria por Trás da Prática
Eu fiz uma combinação do mundo acadêmico com o mundo real. Encontrei um artigo científico, que tem mais de mil citações, formando uma teoria sobre como você pode fazer uma abordagem para entender um código legado. Esse artigo, intitulado "Towards a Theory of the Comprehension of Computer Programs", é um texto antigo de 1983, mas ainda muito relevante. Ele define um processo básico e as variáveis que influenciam nesse processo.
Aplicando a Teoria no Mundo Real
Peguei a teoria do artigo e apliquei em uma situação real. Baixei o código do framework Spring. Queria entender como funciona o processo de resolução do Spring quando chega uma rota e ele tem que invocar um método de um controlador mapeado.
Processo de Verificação
O autor do artigo, Reuven Brooks, descreve que todo o processo de entendimento de código começa com a definição de uma hipótese primária. A partir dessa hipótese, você parte para o processo de verificação, buscando dicas dentro do código que corroborem ou refutem a hipótese. Durante esse processo, você pode derivar novas hipóteses e refiná-las.
Estratégias de Compreensão
Existem três variáveis que influenciam na sua habilidade em entender um código legado:
- Especialização na Tecnologia: Quanto mais especializado você for na tecnologia, mais facilidade terá em navegar na base de código.
- Conhecimento sobre o Domínio: Entender o problema que o software resolve facilita a formulação de hipóteses.
- Estratégias de Compreensão: Diferentes pessoas podem ter diferentes estratégias de compreensão, e algumas podem ser mais eficazes que outras.
Exemplo Prático
No meu exemplo, comecei olhando para os testes de unidade do Spring, especificamente buscando por algo relacionado a "handler mapping". Encontrei um teste que instanciava um "simple URL handler mapping". A partir daí, usei uma estratégia de colocar breakpoints no código para entender o fluxo de execução.
Conclusão
Lidar com código legado é uma atividade padrão na vida de desenvolvedores. Quase nunca estamos na posição de começar algo do zero. Ter uma estratégia bem definida para avançar no entendimento pode acelerar, sua capacidade de gerar valor num ambiente novo.
Espero que este post tenha ajudado a entender melhor como aplicar teorias acadêmicas na prática para compreender códigos legados. Até a próxima!
PS: Se você gostou, deixe um comentário. Se não gostou e tem um comentário construtivo, deixe também. Vou ter o maior prazer em responder.
Top comments (0)