Why we refactor? confessions of GitHub contributors

@article{Silva2016WhyWR,
  title={Why we refactor? confessions of GitHub contributors},
  author={Danilo Silva and Nikolaos Tsantalis and Marco T{\'u}lio Valente},
  journal={Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
  year={2016}
}
Refactoring is a widespread practice that helps developers to improve the maintainability and readability of their code. However, there is a limited number of studies empirically investigating the actual motivations behind specific refactoring operations applied by developers. To fill this gap, we monitored Java projects hosted on GitHub to detect recently applied refactorings, and asked the developers to explain the reasons behind their decision to refactor the code. By applying thematic… 

Figures and Tables from this paper

Why Developers Refactor Source Code
TLDR
A large-scale study quantitatively and qualitatively investigating why developers perform refactoring in open source projects and a detailed taxonomy of motivations pushing developers to refactor source code is presented.
RefDiff4Go: Detecting Refactorings in Go
TLDR
Go extension for RefDiff, which is a multi-language refactoring detection tool, and it is shown that RefDiff4Go runtime performance supports its adoption in professional software projects.
RefDiff: Detecting Refactorings in Version Histories
  • Danilo Silva, M. T. Valente
  • Computer Science
    2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR)
  • 2017
TLDR
An automated approach that identifies refactorings performed between two code revisions in a git repository, which suggests that RefDiff has superior precision and recall than existing state-of-the-art approaches.
Why Developers Refactor Source Code: A Mining-based Study
TLDR
A large-scale study quantitatively and qualitatively investigating why developers perform refactoring in open source projects and a detailed taxonomy of motivations pushing developers to refactor source code is presented.
Towards Better Understanding Developer Perception of Refactoring
  • Eman Abdullah Alomar
  • Computer Science
    2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)
  • 2019
TLDR
This work aims in more accurately mimicking the human decision making when recommending better software refactoring and remodularization and calls such activity Self-Affirmed Refactoring (SAR), by understanding developers perception of refactorings so that the gap between refactored and automation in general is bridged.
Why Do Developers Reject Refactorings in Open-Source Projects?
TLDR
A study in which manually coded rejection reasons inferred from 330 refactoring-related pull requests from 207 open-source Java projects resulted in a comprehensive taxonomy, accompanied with representative examples and highlighted implications, that provides developers with valuable insights on how to ponder and polish theirRefactoring contributions.
How Do I Refactor This? An Empirical Study on Refactoring Trends and Topics in Stack Overflow
TLDR
The results show that Stack Overflow is utilized by a diverse set of developers for refactoring assistance for a variety of technologies, and observations show five areas that developers typically require help withRefactoring– Code Optimization, Tools and IDEs, Architecture and Design Patterns, Unit Testing, and Database.
An Exploratory Study on the Relationship between Changes and Refactoring
TLDR
A quantitative investigation on the relationship between different types of code changes and 28 different refactoring types coming from 3 open source projects showed that developers tend to apply a higher number ofRefactoring operations aimed at improving maintainability and comprehensibility of the source code when fixing bugs.
How We Refactor and How We Mine it ? A Large Scale Study on Refactoring Activities in Open Source Systems
TLDR
It is found that feature addition and bug fixes are strong motivators for developers to refactor their code base, rather than the traditional design improvement motivation; a variety of refactoring types are applied whenRefactoring both production and test code.
Toward Understanding the Impact of Refactoring on Program Comprehension
TLDR
This paper explores the dimension of program comprehension, namely the property that describes how easy it is for developers to understand source code, by exploring the impact of refactoring on program readability.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 45 REFERENCES
A field study of refactoring challenges and benefits
TLDR
A field study of refactoring benefits and challenges at Microsoft through three complementary study methods: a survey, semi-structured interviews with professional software engineers, and quantitative analysis of version history data finds that the refactored definition in practice is not confined to a rigorous definition of semantics-preserving code transformations.
Breaking the barriers to successful refactoring: observations and tools for extract method
TLDR
Three new tools to assist in refactoring are demonstrated, a user study is reported on that shows that speed, accuracy, and user satisfaction can be significantly increased, and a set of usability recommendations are induced that are hoped will help inspire a new generation of programmer-friendly refactors.
Recommending Refactoring Operations in Large Software Systems
During its lifecycle, the internal structure of a software system undergoes continuous modifications. These changes push away the source code from its original design, often reducing its quality. In
On the Impact of Refactoring Operations on Code Quality Metrics
TLDR
RIPE (Refactoring Impact Prediction) is presented, a technique that estimates the impact of refactoring operations on source code quality metrics and it can be used together with any refactororing recommendation tool.
A Comparative Study of Manual and Automated Refactorings
TLDR
This study is enabled by the algorithm, which infers refactorings from continuous changes, which implemented and applied this algorithm to the code evolution data collected from 23 developers working in their natural environment for 1,520 hours, revealing several new facts about manual and automated refactoring.
Recommending automated extract method refactorings
TLDR
This work proposes a novel approach to identify and rank Extract Method refactoring opportunities that are directly automated by IDE-based refactored tools, and aims to recommend new methods that hide structural dependencies that are rarely used by the remaining statements in the original method.
Use, disuse, and misuse of automated refactorings
TLDR
The field study on programmers in their natural settings working on their code found that programmers use predictable automated refactorings even if they have rare bugs or change the behavior of the program.
Template-based reconstruction of complex refactorings
TLDR
REF-FINDER is presented that identifies complex refactorings between two program versions using a template-based refactoring reconstruction approach and uses a logic programming engine to infer concreteRefactoring instances, showing the most comprehensive coverage among existing techniques.
An empirical investigation into the role of API-level refactorings during software evolution
TLDR
The study found several surprising results, including an increase in the number of bug fixes after API-level refactorings and a large number of refactoring revisions include bug fixes at the same time or are related to later bug fix revisions.
...
1
2
3
4
5
...