AddThis Social Bookmark Button

Print

Refactoring Support for Visual Basic 2005
Pages: 1, 2, 3, 4

Encapsulate Field

Consider the following class definition with two public members:


Public Class Point

  Public x As Integer
  Public y As Integer

End Class

Instead of exposing two public members, it would be better to expose them as properties. To do so, right-click on x and select Refactor -> Encapsulate Field (see Figure 19).

figure 19
Figure 19. Encapsulating a variable as a field

The resultant class would look like this:


Public Class Point
  Public Property X() As Integer
    Get
      Return _x
    End Get
    Set(ByVal value As Integer)
      _x = value
    End Set
  End Property
  Private _x As Integer

  Public y As Integer

End Class

There is one interesting aspect of how Refactor works. Instead of declaring the two pubic members separately, say you declare them in one single statement:


Public Class Point
  Public x, y As Integer
    
End Class

If you now use Refactor to encapsulate x as a field, you get the following (notice that now _x is of Object type):


Public Class Point
  Public Property X() As Integer
    Get
      Return _x
    End Get
    Set(ByVal value As Integer)
      _x = Value
    End Set
  End Property
  Private _x As Object

  Public y As Integer
    
End Class

Reverse Conditional

Often time we write code that test for the equality (or inequality) of expressions. Consider the following:


If num < 0 Then
  MsgBox("Negative")
Else
  MsgBox("0 or positive")
End If

You can reverse the condition by highlighting the first condition and then selecting Refactor -> Reverse Conditional (see Figure 20).

figure 20
Figure 20. Reversing the logic of your code

The result would be:


If num >= 0 Then
  MsgBox("0 or positive")
Else
  MsgBox("Negative")
End If

Simplify Expression

The following block of code should be familiar to most people:


Dim obj As Object
If Not (obj Is Nothing) Then
   ...
End If

To simplify the expression and aid readability, you can right-click on the expression and then select Refactor -> Simplify Expression (see Figure 21).

figure 21
Figure 21. Simplifying an expression

The code would be simplified as:


Dim obj As Object
If obj IsNot Nothing Then
   ...
End If

Replace Temp with Query

Consider the following block of code:


'---Volume of Cylinder
Dim radius As Single = 3.5
Dim volume As Single = VolumeOfCylinder(height, radius)
MsgBox(volume)

You can replace the volume variable with a method. To do so, right-click on the volume variable and select Refactor -> Replace Temp with Query (see Figure 22).

figure 22
Figure 22. Replacing a variable with a method call

The code block now becomes (with a newly created GetVolume() method):


Private Function GetVolume( _
                            ByVal height As Single, _
                            ByVal radius As Single) As Single

  Return VolumeOfCylinder(Height, radius)

End Function

'---Volume of Cylinder
Dim radius As Single = 3.5
MsgBox(GetVolume(height, radius))

Split Temporary Variable

Often times you declare a single variable and use it for a variety of purposes. This is error-prone and makes debugging difficult. Consider the following (i is used as loop variant as well as a placeholder for the InputBox() method):


Dim i As Integer
For i = 0 To 10
  ...
Next
i = InputBox("Enter a number")

Right-click on i and select Refactor -> Split Temporary Variable (see Figure 23).

figure 23
Figure 23. Splitting a temporary variable

The resultant code will be:


Dim i As Integer
For i = 0 To 10
  ...
Next

Dim lSplitI As Integer
lSplitI = InputBox("Enter a number")

Summary

With the new Refactor for Visual Basic 2005, there is now no reason why you can say Visual Basic is not for professional developers. What is best is that all Visual Studio 2005 users can download this fantastic tool for free. What are you waiting for? Start coding and improve your code today!

Wei-Meng Lee (Microsoft MVP) http://weimenglee.blogspot.com is a technologist and founder of Developer Learning Solutions http://www.developerlearningsolutions.com, a technology company specializing in hands-on training on the latest Microsoft technologies.


Return to ONDotNet