CSC/ECE 517 Fall 2009/wiki 1a 7a HJ: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 32: Line 32:




Here is a list of some examples of refactoring techniques used. For further information, the reader please refer to Lecture 3 of CSC 517 of Dr. Gehringer and to the section 2.1.2 of the thesis of Thomas Corbat.
Here is a list of some examples of refactoring techniques used. For further information, the reader please refer to Lecture 3 of CSC 517 of Dr. Gehringer [1] inspired of the site [2] and to the section 2.1.2 of the thesis of Thomas Corbat [3].


{|
{|
Line 114: Line 114:
         y = coordy;
         y = coordy;
   }
   }
== References ==
[1] Refactoring and version control, CSC517, NCSU, Dr. Ed Gehringer
    http://courses.ncsu.edu/csc517/common/lectures/notes/lec3-f09.pdf
[2] www.refactoring.com
[3] Refactoring Support for the Eclipse Ruby Development Tools
    HSR, University of Applied Science Rapperswil 
    Diploma Thesis of Thomas Corbat, Lukas Felber and Mirko Stocker
    Summary :  http://subs.emis.de/LNI/Proceedings/Proceedings106/gi-proc-106-039.pdf
    Complete Thesis:  http://r2.ifs.hsr.ch/rubyrefactoring.pdf

Revision as of 01:19, 9 September 2009

Definition of code refactoring

According Wikipedia : "Code refactoring is the process of changing a program's internal structure without modifying its external functional behavior or existing functionality with the goals of readability, maintainability, performance, extensibility and simplicity."


Goals of refactoring

Refactoring is motivated by the difficulty of adding new functionality to a program. or fixing a bug in it.

As we said berfore, after code refactoring, the program does the the exact same thing it did before.

The differences are that the new code:

1) is easier to read and so to understand
2) contains less duplication
3) is less complex
4) is more flexible towards future changes
5) could lead to a faster compilation time


Common Refactorings Tools

Here is a list of some examples of refactoring techniques used. For further information, the reader please refer to Lecture 3 of CSC 517 of Dr. Gehringer [1] inspired of the site [2] and to the section 2.1.2 of the thesis of Thomas Corbat [3].

1) Rename : Methods, Fields, Packages, Projects, Parameters, Local Variables
2) Encapsulate Field
3) Move : Method, Field
4) Pull up : Field, Method
5) Push down : Field, Method
6) Extract : Method, Class, Constant, Local Variables
7) Convert Local Variables to Field
8) Change Method Signature


Examples of Refactoring for JAVA

Here are some examples of Refactoring for JAVA

1) Rename

First code

public class rename_Method {

   static void WrongRenameMethod() {
       System.out.println("NC State");
   }

}


Refactor by renaming

public class rename_Method {

   static void ncsu(){
       System.out.println("NC State");
   }

}







def FirstMethod

    puts("NC State");

end

Refactor by renaming

def NCSU

    puts("NC State");


2) Encapsulation

After encapsulation

Public class Point {

  int x,y;
  Public Point(int coordx, int coordy){
       x = coordx;
       y = coordy;
  }



References

[1] Refactoring and version control, CSC517, NCSU, Dr. Ed Gehringer

   http://courses.ncsu.edu/csc517/common/lectures/notes/lec3-f09.pdf

[2] www.refactoring.com

[3] Refactoring Support for the Eclipse Ruby Development Tools

   HSR, University of Applied Science Rapperswil  
   Diploma Thesis of Thomas Corbat, Lukas Felber and Mirko Stocker
   Summary :  http://subs.emis.de/LNI/Proceedings/Proceedings106/gi-proc-106-039.pdf
   Complete Thesis:  http://r2.ifs.hsr.ch/rubyrefactoring.pdf