Program |
 |
|
|
Find in Program |
 |
|
|
Page |
 |
|
|
Basket |
 |
|
view, help
"Advanced Refactorings in Eclipse"
|
|
|
|
Advanced Refactorings in Eclipse
Courtyard, Demo room 1 Wednesday, 12:30, 45 minutes 7 | · | 8 | · | 9 | · | 10 | · | 11 | · | 12 | · | 13 | · | 14 | · | 15 | · | 16 | · | 17 | · | 18 | · | 19 | · | 20 | · | 21 |
This event is also being given Tuesday at 15:30.
Robert Fuhrer, IBM T.J. Watson Research Center Frank Tip, IBM T.J. Watson Research Center Adam Kiezun, MIT
Demonstration number: 4
We propose a demonstration of several advanced refactorings for Java
implemented for the Eclipse IDE (www.eclipse.org). These refactorings are
semantics-preserving program transformations typical of the transformations
object-oriented programmers perform manually to improve the structure of
existing programs, and promote reuse, clarity, and extensibility.
This demonstration consists of three parts: (i) a review of Eclipse's
implementations of several common refactorings, including Extract Method,
Introduce Factory and Change Method Signature, described in Fowler's seminal
book on refactoring, (ii) a demonstration of generalization-related
refactorings such as Extract Interface, which extracts an interface from a
class to reduce dependencies on implementation particulars, and Generalize
Type, for remediating over-specific declarations, and (iii) a demonstration of
Genericize Container Uses, a refactoring in development for migrating uses of
standard container classes (e.g. ArrayList or HashMap) to their generic
counterparts in Java 1.5 (e.g., ArrayList<String>). This determines the
element types that flow into containers, modifies declarations and allocations
where possible, and removes casts rendered redundant.
The latter two categories require non-trivial static analysis, and present
challenging software engineering usability issues, reflecting complications
that programmers face in performing such transformations manually. Therefore,
each demonstration will include a brief overview of the technical challenges
that the refactoring presents, and highlights of the approach we took in
addressing them. In particular, we briefly describe a new piece of Eclipse
infrastructure designed to help implement various kinds of context-sensitive
and context-insensitive type and pointer analyses for Java.
|