Revisiting the refactoring mechanics

Abstract Context Refactoring is a key practice in agile methodologies used by a number of developers, and available in popular IDEs. However, it is unclear whether the refactoring mechanics have the same meaning for developers. Objective In this article, we revisit the refactoring mechanics. Method We conduct a survey with 107 developers of popular Java projects on GitHub. We asked them about the output of seven refactoring types applied to small programs. Results Developers do not expect the same outputs in all questions. The refactoring mechanics is based on developers’ experience for a number of them (71.02%). Some developers (75.70%) use IDEs to apply refactorings. However, the output yielded by the preferred IDE is different from what they want. Conclusion Developers and IDE developers use different mechanics for most refactoring types considered in our survey, and this may impact developers’ communication.

[1]  Rohit Gheyi,et al.  Automated Behavioral Testing of Refactoring Engines , 2013, IEEE Trans. Software Eng..

[2]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[3]  Oege de Moor,et al.  Specifying and implementing refactorings , 2010, OOPSLA.

[4]  Andrew P. Black,et al.  How We Refactor, and How We Know It , 2012, IEEE Trans. Software Eng..

[5]  Andrew P. Black,et al.  Restructuring software with gestures , 2011, 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[6]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[7]  Miryung Kim,et al.  An Empirical Study of RefactoringChallenges and Benefits at Microsoft , 2014, IEEE Transactions on Software Engineering.

[8]  Stas Negara,et al.  Use, disuse, and misuse of automated refactorings , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[9]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.