How We Refactor, and How We Know It
Abstract
Refactoring is widely practiced by developers, and considerable research and development effort has been invested in refactoring tools. However, little has been reported about the adoption of refactoring tools, and many assumptions about refactoring practice have little empirical support. In this paper, we examine refactoring tool usage and evaluate some of the assumptions made by other researchers. To measure tool usage, we randomly sampled code changes from four Eclipse and eight Mylyn developers and ascertained, for each refactoring, if it was performed manually or with tool support. We found that refactoring tools are seldom used: 11 percent by Eclipse developers and 9 percent by Mylyn developers. To understand refactoring practice at large, we drew from a variety of data sets spanning more than 39,000 developers, 240,000 tool-assisted refactorings, 2,500 developer hours, and 12,000 version control commits. Using these data, we cast doubt on several previously stated assumptions about how programmers refactor, while validating others. Finally, we interviewed the Eclipse and Mylyn developers to help us understand why they did not use refactoring tools and to gather ideas for future research.
Integrity signals
Registry
Cites
Statistics
Claims the paper makes
Claims other papers make about this one
Each is checked against this paper’s own text: does it say what the citing paper says it does?
Prior studies reported that software architects and developers primarily rely on manual efforts for large-scale refactoring activities, with minor support from disjoint tools.
“Prior studies also reported that software architects and developers primarily rely on manual efforts for large-scale refactoring activities, with minor support from disjoint tools [37, 71, 104].”
From Software Architecture in Practice: Challenges and Opportunities (2023) · cites this paper as [71]
Cited by
Sorted by citations
On the Comprehension of Program Comprehension
Maalej, W., Tiarks, R., Roehm, T., & Koschke, R. (2014) · ACM Transactions on Software Engineering and Methodology · doi:10.1145/2622669 · Cited by 180 · see citing works
Managing Messes in Computational Notebooks
Head, A., Hohman, F., Barik, T., Drucker, S. M., & DeLine, R. (2019) · Proceedings of the 2019 CHI Conference on Human Factors in Computing Systems · doi:10.1145/3290605.3300500 · Cited by 165 · see citing works
Is GitHub copilot a substitute for human pair-programming?: an empirical study
Imai, S. (2022) · Proceedings of the ACM/IEEE 44th International Conference on Software Engineering: Companion Proceedings · doi:10.1145/3510454.3522684 · Cited by 116 · see citing works
Use, disuse, and misuse of automated refactorings
Vakilian, M., Chen, N., Negara, S., Rajkumar, B. A., Bailey, B. P., & Johnson, R. E. (2012) · 2012 34th International Conference on Software Engineering (ICSE) · doi:10.1109/icse.2012.6227190 · Cited by 106 · see citing works
Manual refactoring changes with automated refactoring validation
Ge, X., & Murphy-Hill, E. (2014) · Proceedings of the 36th International Conference on Software Engineering · doi:10.1145/2568225.2568280 · Cited by 55 · see citing works
Self-citationSoftware Architecture in Practice: Challenges and Opportunities
Wan, Z., Zhang, Y., Xia, X., Jiang, Y., & Lo, D. (2023) · Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering · doi:10.1145/3611643.3616367 · Cited by 30 · see citing works
Detecting architecturally-relevant code smells in evolving software systems
Bertran, I. M. (2011) · Proceedings of the 33rd International Conference on Software Engineering · doi:10.1145/1985793.1986003 · Cited by 28 · see citing works
Identifying the Factors That Influence Trust in AI Code Completion
Brown, A., D'Angelo, S., Murillo, A., Jaspan, C., & Green, C. (2024) · Proceedings of the 1st ACM International Conference on AI-Powered Software · doi:10.1145/3664646.3664757 · Cited by 20 · see citing works
Industry experiences with large-scale refactoring
Ivers, J., Nord, R. L., Ozkaya, I., Seifried, C., Timperley, C. S., & Kessentini, M. (2022) · Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering · doi:10.1145/3540250.3558954 · Cited by 19 · see citing works
A Practical Guide to Analyzing IDE Usage Data
Snipes, W., Murphy-Hill, E., Fritz, T., Vakilian, M., Damevski, K., Nair, A. R., & Shepherd, D. (2015) · The Art and Science of Analyzing Software Data · doi:10.1016/b978-0-12-411519-4.00005-7 · Cited by 14 · see citing works
Self-citationWork fragmentation in developer interaction data
Cruz, L. C., Sanchez, H., González, V. M., & Robbes, R. (2017) · Journal of Software: Evolution and Process · doi:10.1002/smr.1839 · Cited by 6 · see citing works
- Authors
- Murphy-Hill, E., Parnin, C., & Black, A. P.
- Affiliations
- North Carolina State University (US)
- Georgia Institute of Technology (US)
- Portland State University (US)
- Venue
- IEEE Transactions on Software Engineering
- Published
- 2012-01
- Volume
- 38
- Issue
- 1
- Pages
- 5-18
- ISSN
- 0098-5589 (ISSN-L)
- OpenAlex
- W2113157806
- Cited by
- 547
- References
- 0
- Citations by year
- 2026: 14 · 2025: 35 · 2024: 27 · 2023: 38 · 2022: 36 · 2021: 41 · 2020: 55 · 2019: 46 · 2018: 30 · 2017: 56 · 2016: 36 · 2015: 39 · 2014: 37 · 2013: 30 · 2012: 16
- FWCI
- 85.59
- Type
- journal article
- Language
- en
- Open access
- closed
- Locations
- IEEE Transactions on Software Engineering (publishedVersion)
- Funders
- National Science Foundation
- Topics
- Physical Sciences › Computer Science › Information Systems › Software Engineering Research
- Physical Sciences › Computer Science › Information Systems › Software Engineering Techniques and Practices
- Physical Sciences › Computer Science › Software › Model-Driven Software Engineering Techniques
- Keywords
- refactoring, refactoring tools, tool adoption, eclipses, developer behavior, code amendments
About these checks
Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.
Statistics and arithmetic are recomputed, not judged.
Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.
What counts as a claim ›How we measure confidence ›How we check this ›
Are you an author, or do you see a problem with this page? Request a review