Refactoring Legacy JavaScript Code to Use Classes: The Good, The Bad and The Ugly

  • Leonardo Humberto Silva
  • Marco Tulio Valente
  • Alexandre Bergel
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10221)


JavaScript systems are becoming increasingly complex and large. To tackle the challenges involved in implementing these systems, the language is evolving to include several constructions for programming-in-the-large. For example, although the language is prototype-based, the latest JavaScript standard, named ECMAScript 6 (ES6), provides native support for implementing classes. Even though most modern web browsers support ES6, only a very few applications use the class syntax. In this paper, we analyze the process of migrating structures that emulate classes in legacy JavaScript code to adopt the new syntax for classes introduced by ES6. We apply a set of migration rules on eight legacy JavaScript systems. In our study, we document: (a) cases that are straightforward to migrate (the good parts); (b) cases that require manual and ad-hoc migration (the bad parts); and (c) cases that cannot be migrated due to limitations and restrictions of ES6 (the ugly parts). Six out of eight systems (75%) contain instances of bad and/or ugly cases. We also collect the perceptions of JavaScript developers about migrating their code to use the new syntax for classes.


JavaScript Refactoring ECMAScript 6 

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  1. 1.Federal Institute of Northern Minas GeraisSalinasBrazil
  2. 2.Federal University of Minas GeraisBelo HorizonteBrazil
  3. 3.PLEIAD Lab, DCCUniversity of ChileSantiagoChile

Personalised recommendations