A Large-Scale Study on Recommendations of Composite Refactorings in Practice - Bibiano, Ana Carla; Garcia, Alessandro; Assunção, Wesley K. G. (Anais Estendidos do Congresso Brasileiro de Software: Teoria e Prática (CBSoft); 2024: Anais Estendidos do XV Congresso Brasileiro de Software: Teoria e PráticaDO - 10.5753/cbsoft_estendido.2024.4116, 2024)
A refatoração é uma atividade não-trivial de manutenção de software. Desenvolvedores gastam muito tempo e esforço refatorando o código para remover problemas estruturais, tais como anomalias de código. Estudos recentes indicaram que desenvolvedores frequentemente aplicam refatoração composta, ou seja, duas ou mais refatorações inter-relacionadas. No entanto, estudos anteriores revelaram que apenas 10% das refatorações compostas em projetos de software são consideradas completas, ou seja, aquelas que removem completamente as anomalies de código. Ademais, a literatura é escassa quanto ao catálogo de refatorações completas mais comuns e seus efeitos colaterais. Objetivo: Para preencher essas lacunas, realizamos um estudo de métodos mistos para criar um catálogo de refatorações compostas completas derivadas do conhecimento prático. Método: Coletamos empiricamente as refatorações completas mais comuns e seus efeitos colaterais aplicados em 42 projetos de código aberto e fechado, gerando um catálogo de recomendações de refatorações com postas completas. Em seguida, as recomendações do nosso catálogo foram avaliadas por 21 desenvolvedores de software. Resultados: O catálogo derivado inclui quatro recomendações para remover completamente múltiplas anomalias de código, minimizando possíveis efeitos colaterais. A avaliação indica que 85% dos desenvolvedores relataram que suas próprias soluções poderiam ter efeitos colaterais piores sem nossas recomendações, aumentando o esforço para remover anomalias de código. Conclusão: Nosso catálogo pode orientar desenvolvedores e pesquisadores sobre como combinar melhor refatorações compostas que reduzam efetivamente os efeitos colaterais na prática.