visual studio 2005中实现vb重构(2)

2026-03-02 12:17:32

四、 重构:提取方法

  在编码中一种最常见的问题是,函数太长。小的函数可以重用而且更为容易地被重新改编进新的行为中。一般情况下,很长的代码关系紧密的函数通常仅用于限制非常严格的情况下。为了使代码易于重用,你可以提取代码片断以形成一些命名方法。除了这些命名的方法要易于重用外,其命名还要清晰地解释该方法的目的。 

  为使用提取方法,选择一段你想要转换成一个命名方法的代码片断,然后在选择的代码片断上右击鼠标,并且选择"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

 总结:

  重构是重要的,并不是因为其潜在的技术都是新技术,而是因为该技术被加以描述而且动机和所希望的结果都是非常明确的。重构能改进内部的结构而不改变现有代码的外在行为。它去掉了什么是好的代码和什么是差一些的代码的主观性:经重构的代码被认为是好的,而未经重构的代码被认为差一些。(完美的代码可能不存在。)

  代码是好一些还是差一些并不比它是否能够工作更为重要。重构增加了代码在发展和进化过程中将继续工作的可能性。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢