Refactoring for reuse: an empirical study

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. The...

Full description

Saved in:
Bibliographic Details
Published inInnovations in systems and software engineering Vol. 18; no. 1; pp. 105 - 135
Main Authors Alomar, Eman Abdullah, Wang, Tianjia, Raut, Vaibhavi, Mkaouer, Mohamed Wiem, Newman, Christian, Ouni, Ali
Format Journal Article
LanguageEnglish
Published London Springer London 01.03.2022
Springer Nature B.V
Subjects
Online AccessGet full text
ISSN1614-5046
1614-5054
DOI10.1007/s11334-021-00422-6

Cover

Loading…
More Information
Summary: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.
Bibliography:ObjectType-Article-1
SourceType-Scholarly Journals-1
ObjectType-Feature-2
content type line 14
ISSN:1614-5046
1614-5054
DOI:10.1007/s11334-021-00422-6