Eclipse: Most useful refactorings [closed] Eclipse: Most useful refactorings [closed] java java

Eclipse: Most useful refactorings [closed]


It is an interesting question. I know what works for me and it is interesting to see what others use.

I decided to take a more scientific approach to determine the most commonly used refactoring commands. Eclipse has a Usage Data Collector (UDC) feature built in. The data is publicly available. I took the data and extracted the following graph which shows the most commonly used editing commands (without navigation commands).

alt text http://img.skitch.com/20091207-bmcng36rjy837sqmcx58b85age.gif

However, I am a strong believer in "Save Actions" for formatting and organizing imports (read my article about it), so I wouldn't count those. I would also remove the commenting actions. The picture looks like this: alt text http://img.skitch.com/20091207-ieas1mk5114fwitucqkqxyw6t.gif


Rename - because giving things meaningful names is the best way to write self-documenting code. Shift+Alt+R

Extract method - whenever a method gets too long. Shift+Alt+M

Extract constant - because magic numbers are bad. Shift+Alt+T (refactoring menu, there's no direct shortcut).

Inline/introduce variable - to remove clutter from methods. Shift+Alt+I (inline), Shift+Alt+L (introduce)


My favourites (in order of using):

  1. Rename (Alt-Shift-R, or Ctrl-1 for faster in-file renaming)
    Good renaming variables,methods,etc. without side effects.
  2. Extract Variable (Ctrl-1, Alt-Shift-L)
    Good for splitting a quick-made-100-character-line to separate steps.
  3. Extract Method (Alt-Shift-M)
    Create a method out of some code without any side effects.
  4. Split Variable Declaration (Ctrl-1)
    Good when you initialize a variable at the declaration and now find out, that the initialisation needs to be in a try- or if-block.
  5. Change Method Signature (Alt-Shift-C)
    The handy Swiss Army Knife of method signature manipulation, including default values for new parameters.
  6. Pull Up/Push DownPull methods and variables to a generic interface or superclass or push it down to a subclass
  7. Extract Interface/Superclass
    Extract an interface or a superclass out of the current class. Very handy.