LambdaFicator: From imperative to functional programming through automated refactoring
Authors:
- 1 May 2013
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- No. 02705257,p. 1287-1290
Abstract
Java 8 introduces two functional features: lambda expressions and functional operations like map or filter that apply a lambda expression over the elements of a Collection. Refactoring existing code to use these new features enables explicit but unobtrusive parallelism and makes the code more succinct. However, refactoring is tedious (it requires changing many lines of code) and error-prone (the programmer must reason about the control-flow, data-flow, and side-effects). Fortunately, these refactorings can be automated. We present LambdaFicator, a tool which automates two refactorings. The first refactoring converts anonymous inner classes to lambda expressions. The second refactoring converts for loops that iterate over Collections to functional operations that use lambda expressions. In 9 open-source projects we have applied these two refactorings 1263 and 1595 times, respectively. The results show that LambdaFicator is useful. A video highlighting the main features can be found at: http://www.youtube.com/watch?v=EIyAflgHVpU.Keywords
This publication has 7 references indexed in Scilit:
- How do developers use parallel libraries?2012
- Combining functional and imperative programming for multicore software: An empirical study evaluating Scala and Java2012
- A case study on refactoring in Haskell programs2011
- Registration-based language abstractions2010
- Scaling Scala at Twitter2010
- Relooper2009
- Comparative Study of Refactoring Haskell and Erlang Programs2006