Code Readability Assessment and Improvement: Human and Automated Perspectives
Publicado: 20/08/2025 - 10:19
Última modificação: 20/08/2025 - 10:19
Linha de pesquisa: Engenharia de Software
Resumo: A legibilidade é uma característica crucial no desenvolvimento de software, pois os desenvolvedores frequentemente dedicam uma parte significativa do tempo lendo e compreendendo o código. No entanto, ainda existem desafios tanto na definição de métricas precisas para sua avaliação quanto na automação de refatorações que visam aprimorá- la. Com a ascensão dos modelos de linguagem de grande escala (LLMs), surge uma nova oportunidade: avaliar não apenas a legibilidade do código gerado por esses modelos, mas também sua capacidade de refatorar código existente, buscando torná-lo mais legível. Este estudo avalia o desempenho de legibilidade de três LLMs (ChatGPT, DeepSeek e Gemini), comparando os trechos de código por eles gerados com aqueles escritos por humanos no Stack Overflow. Com isso, é apresentada uma abordagem híbrida que combina ferramentas automáticas de análise estática (ASATs) com refatorações baseadas em LLMs para melhorar a legibilidade do código. Além disso, é extraída uma taxonomia das melhorias de legibilidade realizadas por desenvolvedores em repositórios reais do GitHub, escritos nas linguagens Java e Python. Os resultados indicam que os LLMs, em geral, geram código com significativamente menos alertas de legibilidade em comparação com as recomendações do Stack Overflow. A combinação de LLMs e ASATs oferece um potencial valioso para refatorações orientadas à legibilidade, especialmente ao melhorar o código por meio de uma única interação com os LLMs. Modelos focados em geração de código, como o DeepSeek Coder, alcançaram o melhor desempenho no refinamento do código-fonte. Em código de projetos reais, os desenvolvedores tendem a melhorar a legibilidade ao esclarecer a intenção do código e reduzir redundâncias e trechos verbosos. Embora desenvolvedores de Python e Java compartilhem preocupações como a melhoria da nomenclatura, algumas diferenças são observadas: desenvolvedores Java focam mais na remoção de código redundante e desnecessário, enquanto desenvolvedores Python priorizam a clareza do código.
Link para a defesa: https://teams.microsoft.com/l/meetup-join/19%3ameeting_OTgxZWRlYzYtNWZkM...