The NetBeans IDE has some great refactoring tools. It makes lots of tasks so much less error prone than doing them manually. In this article, I describe some of my favourite refactoring tools. (These tools can be accessed from the main menu bar (Refactor) or from the context menu of a Java file open in the editor.)
#1 – Rename
Anything that has a name can be renamed. But my favourite example is renaming a class.
When a class is renamed, not only the source code of the class (optionally including comments) is changed, but also the name of the file where it lives. And also any usages of the class elsewhere in your open projects!
#2 – Encapsulate Fields
This feature allows you to generate getters, setters and property change support for fields in a class. It allows you to specify various parameters, such as the visibility of the accessors. So lets take a very simple class, and apply the Encapsulate Fields tool:
… and lets look at the generated code:
#3 – Extract Interface
If you have an existing class, and you want to extract some of its methods into an interface, the NetBeans IDE has just the tool for you!
Not only does the interface get generated, but your class is automatically changed to implement the new interface too!
#4 – Introduce Method
Sometimes one wants to extract some lines of code into a separate method. Maybe because the initial method is becoming too long to be readable, or because that part of the functionality will be reused elsewhere. Whatever the motivation, the NetBeans IDE has just the tool for the job! So lets look at a silly example where an identical piece of code occurs twice in the same class:
And then lets look at the result of the refactoring:
Tip: Experiment with extracting large, complicated blocks of code – the NetBeans IDE is capable of much more than this simple example!
#5 – Change Method Parameters
Say we decide to now introduce a new parameter for the extractedMethod() created above. If we did this manually, it would mean changing each place where the method is called manually too. (Sometimes this is desirable, but it can be a lot of effort.) With the Change Method Parameters feature, this task becomes much easier, since it allows you to specify a default value for the new parameter.
Now our class looks like this:
Tip: Also try out the Create New Method and Delegate from Existing Method option!