. Refactoring is the de-facto practice to optimize software health. While there has been several studies proposing 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 which were intended to improve the software reusability. We analyze the impact of reusability refactorings on 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

Publication Date

Spring 5-1-2020


This is a post-peer-review, pre-copyedit version of an article published in ICSR 2020: Reuse in Emerging Software Engineering Practice. The final authenticated version is available online at: https://doi.org/10.1007/978-3-030-64694-3_16

Document Type

Conference Paper

Department, Program, or Center

Software Engineering (GCCIS)


RIT – Main Campus