Title
Refactoring for reuse: an empirical study
Abstract
Refactoring is the de-facto practice to optimize software health. While several studies propose refactoring strategies to optimize software design through applying design patterns and removing design defects, little is known about how developers actually refactor their code to improve its reuse. Therefore, we extract, from 1,828 open source projects, a set of refactorings that were intended to improve the software reusability. We analyze the impact of reusability refactorings on the state-of-the-art reusability metrics, and we compare the distribution of reusability refactoring types, with the distribution of the remaining mainstream refactorings. Overall, we found that the distribution of refactoring types, applied in the context of reusability, is different from the distribution of refactoring types in mainstream development. In the refactorings performed to improve reusability, source files are subject to more design level types of refactorings. Reusability refactorings significantly impact, high-level code elements, such as packages, classes, and methods, while typical refactorings, impact all code elements, including identifiers, and parameters. These findings provide practical insights into the current practice of refactoring in the context of code reuse involving the act of refactoring.
Year
DOI
Venue
2022
10.1007/s11334-021-00422-6
Innovations in Systems and Software Engineering
Keywords
DocType
Volume
Refactoring, Reusability, Software metrics, Quality
Journal
18
Issue
ISSN
Citations 
1
1614-5046
0
PageRank 
References 
Authors
0.34
32
6
Name
Order
Citations
PageRank
Eman Abdullah AlOmar1487.64
Tianjia Wang200.34
Vaibhavi Raut300.34
Mohamed Wiem Mkaouer422828.58
Christian Newman521.38
Ali Ouni6168.44