Refactoring for reuse: an empirical study

Eman Abdullah Alomar, Tianjia Wang, Vaibhavi Raut, Mohamed Wiem Mkaouer, Christian Newman, Ali Ouni

    Research output: Contribution to journalArticlepeer-review

    9 Scopus citations

    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.

    Original languageEnglish
    Pages (from-to)105-135
    Number of pages31
    JournalInnovations in Systems and Software Engineering
    Volume18
    Issue number1
    DOIs
    StatePublished - Mar 2022

    Keywords

    • Quality
    • Refactoring
    • Reusability
    • Software metrics

    Fingerprint

    Dive into the research topics of 'Refactoring for reuse: an empirical study'. Together they form a unique fingerprint.

    Cite this