TL;DR
This study empirically investigates how developers refactor code to enhance reusability, analyzing 1,828 open-source projects to understand the types and impacts of reusability-focused refactorings.
Contribution
It provides the first large-scale empirical analysis of reusability refactorings, highlighting differences from mainstream refactoring practices and their effects on high-level code elements.
Findings
Reusability refactorings differ from mainstream refactorings in type distribution.
Reusability refactorings target high-level code elements like packages, classes, and methods.
These refactorings significantly impact design-level aspects of the code.
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,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
