visual studio 2005中实现vb重构(2)
四、 重构:提取方法
在编码中一种最常见的问题是,函数太长。小的函数可以重用而且更为容易地被重新改编进新的行为中。一般情况下,很长的代码关系紧密的函数通常仅用于限制非常严格的情况下。为了使代码易于重用,你可以提取代码片断以形成一些命名方法。除了这些命名的方法要易于重用外,其命名还要清晰地解释该方法的目的。
为使用提取方法,选择一段你想要转换成一个命名方法的代码片断,然后在选择的代码片断上右击鼠标,并且选择"Refactor!|提取方法"。为了说明问题,我使用了一个简单的for循环-它把HeartRate向控制台输出100次。
如果你仅有一个可用的重构,那么可以使用一键重构-通过按下Ctrl+~-这可以激活重构并且显示一个动作提示(见图2)。再一次,在它的当前位置前后移动选择器并且按下回车键。在按下回车键后,方法PseudoLongMethod和新提取的方法被修改,详见列表2。
当前可用的重构和动作提示,提取方法
列表2:方法PseudoLongMethod被重构,这使得BunchOfCode成为一个独立的方法:
Imports
System.ServiceProcess
Public
Class WillRefactor
Private
HeartRate As Integer
Public
Property HeartRate1() As Integer
Get
Return
HeartRate
End
Get
Set(ByVal
value As Integer)
HeartRate
= value
End
Set
End
Property
Public
Sub PseudoLongMethod()
'
a bunch of code
BunchOfCode()
End
Sub
Private
Sub BunchOfCode()
Dim
I As Integer
For
I = 1 To 100
Console.WriteLine(HeartRate)
Next
End
Sub
End
Class
五、
重构:创建重载
假定BunchOfCode的定义是接收一个Count参数(Count用于循环的上限值);并且假定,在某些情况下已知一个缺省值。你可以右击BunchOfCode(见列表3)并且选择"Refactor!|Create
Overload"以创建一个新方法来重载BunchOfCode并且用一个缺省值来调用原始方法(见列表4)。
列表3:具有单个参数的新版本代码
Private
Sub BunchOfCode(ByVal count As Integer)
Dim
I As Integer
For
I = 1 To count
Console.WriteLine(HeartRate)
Next
End
Sub
列表4:由Refactor所创建的旧的和新的重载的BunchOfCode方法:
Private
Sub BunchOfCode(ByVal count As Integer)
Dim
I As Integer
For
I = 1 To count
Console.WriteLine(HeartRate)
Next
End
Sub
Private
Sub BunchOfCode()
Dim
lCount As Integer = 0
BunchOfCode(lCount)
End
Sub
总结:
重构是重要的,并不是因为其潜在的技术都是新技术,而是因为该技术被加以描述而且动机和所希望的结果都是非常明确的。重构能改进内部的结构而不改变现有代码的外在行为。它去掉了什么是好的代码和什么是差一些的代码的主观性:经重构的代码被认为是好的,而未经重构的代码被认为差一些。(完美的代码可能不存在。)
代码是好一些还是差一些并不比它是否能够工作更为重要。重构增加了代码在发展和进化过程中将继续工作的可能性。