\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax \defcounter {refsection}{0}\relax \select@language {USenglish} \defcounter {refsection}{0}\relax \contentsline {chapter}{\numberline {1}Introduction}{1} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {1.1}What is Refactoring?}{1} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {1.1.1}Defining refactoring}{1} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {1.1.2}Motivation}{2} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {1.2}Classification of refactorings}{3} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {1.2.1}Structural refactorings}{3} \defcounter {refsection}{0}\relax \contentsline {subsubsection}{Basic refactorings}{3} \defcounter {refsection}{0}\relax \contentsline {subsubsection}{Composite refactorings}{6} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {1.2.2}Functional refactorings}{7} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {1.3}The impact on software quality}{7} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {1.3.1}What is meant by quality?}{7} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {1.3.2}The impact on performance}{8} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {1.4}Correctness of refactorings}{8} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {1.5}Composite refactorings}{8} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {1.6}Software metrics}{8} \defcounter {refsection}{0}\relax \contentsline {chapter}{\numberline {2}Refactorings in Eclipse JDT: Design and Shortcomings}{9} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {2.1}Design}{9} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {2.1.1}The Language Toolkit}{9} \defcounter {refsection}{0}\relax \contentsline {subsubsection}{The Refactoring Class}{9} \defcounter {refsection}{0}\relax \contentsline {subsubsection}{The Change Class}{10} \defcounter {refsection}{0}\relax \contentsline {subsubsection}{Executing a Refactoring}{10} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {2.2}Shortcomings}{10} \defcounter {refsection}{0}\relax \contentsline {subsubsection}{Absence of Generics in Eclipse Source Code}{10} \defcounter {refsection}{0}\relax \contentsline {chapter}{\numberline {3}Composite Refactorings in Eclipse}{13} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {3.1}A Simple Ad Hoc Model}{13} \defcounter {refsection}{0}\relax \contentsline {section}{\numberline {3.2}The Extract and Move Method Refactoring}{13} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {3.2.1}The ExtractAndMoveMethodChanger Class}{13} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {3.2.2}The ExtractAndMoveMethodPrefixesExtractor Class}{13} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {3.2.3}The Prefix Class}{13} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {3.2.4}The PrefixSet Class}{13} \defcounter {refsection}{0}\relax \contentsline {subsection}{\numberline {3.2.5}Hacking the Refactoring Undo History}{13}