Refactoring legacy javascript code to use classes: The good, the bad and the ugly
Author
dc.contributor.author
Silva, Leonardo Humberto
Author
dc.contributor.author
Valente, Marco Tulio
Author
dc.contributor.author
Bergel, Alexandre
Admission date
dc.date.accessioned
2019-05-29T13:30:20Z
Available date
dc.date.available
2019-05-29T13:30:20Z
Publication date
dc.date.issued
2017
Cita de ítem
dc.identifier.citation
Lecture Notes in Computer Science, Volumen 10221 LNCS, 2017
Identifier
dc.identifier.issn
16113349
Identifier
dc.identifier.issn
03029743
Identifier
dc.identifier.other
10.1007/978-3-319-56856-0_11
Identifier
dc.identifier.uri
https://repositorio.uchile.cl/handle/2250/168926
Abstract
dc.description.abstract
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 programmingin-
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.