CSC/ECE 517 Fall 2009/wiki1a 9 mk: Difference between revisions
Line 48: | Line 48: | ||
==Improvement for Current Refactoring Tools== | ==Improvement for Current Refactoring Tools== | ||
Tools that help the programmers with selection should: | |||
Be lightweight. Users can normally select code quickly and efficiently, and any tool to assist selection should not add overhead to slow down the common case. | |||
Help the programmer overcome unfamiliar or unusual code formatting. | |||
Allow the programmer to select code in a manner specific to the task they are performing. For example, while bracket matching can be helpful, bracketed statements are not the only meaningful program construct that a programmer needs to select. | |||
==Conclusion== | ==Conclusion== |
Revision as of 20:06, 6 September 2009
Research in Refactoring Tools
Refactoring
Refactoring is the process of modifying existing source codebase in a structured and incremental way while preserving its external behavior. This process preserves the functionality of the program without introducing new bugs. Refactoring also promotes reuse of the existing codebase for other purposes thus increasing code reusability.
Overview
The fundamental work is primarily focused on the definitions and mechanism of refactoring, and proving their correctness. Refactoring means that the behaviour/functionality of the program does not change and therefore any program which meets its specifications before refactoring will continue to meet those specifications even afterwards. Refactoring can be done on any codebase and it is a general set of operations. Hence it comes with preconditions which specifies under what circumstances refactoring can be performed, also with the conformation that the dependency graphs are unchanged even after the refactoring is performed.
Current Automated Refactoring Tools
Features of some Refactoring Tools
Refactoring can be grouped into three broad categories.
1.Changing the name and physical organization of code, including renaming fields, variables, classes, and interfaces, and moving packages and classes.
2.Changing the logical organization of code at the class level, including turning anonymous classes into nested classes, turning nested classes into top-level classes, creating interfaces from concrete classes, and moving methods or fields from a class to a subclass or superclass.
3.Changing the code within a class, including turning local variables into class fields, turning selected code in a method into a separate method, and generating getter and setter methods for fields.
Java Refactoring Tool, Eclipse
Ruby Refactoring Tool, Aptana
.NET Refactoring Tool, Visual Studio IDE
Academic Underpinning
Improvement for Current Refactoring Tools
Tools that help the programmers with selection should:
Be lightweight. Users can normally select code quickly and efficiently, and any tool to assist selection should not add overhead to slow down the common case. Help the programmer overcome unfamiliar or unusual code formatting. Allow the programmer to select code in a manner specific to the task they are performing. For example, while bracket matching can be helpful, bracketed statements are not the only meaningful program construct that a programmer needs to select.