软件工程Visual Studio 2005实现VB重构英文文献及翻译 第3页
摘要:根据Martin Fowler的解释,重构是一种改进的内部结构而不改变其外部行为的建构方式,Visual Studio.NET 2005支持C#重构,本文讲解在Visual Studio 2005中实现VB重构。
• 一 引言
有两个主要原因使得Visual Basic极为流行:VB6程序员和OOP程序员。VB6程序员想要VB确实易用;OOP程序员认为VB需要成为一种象C#或C++一样强有力的语言,否则VB只是一个玩具。VB不可能是一种业余爱好者的语言,并且也不可能同时又是一种完全意义上的面向对象的语言,并且微软不可能去统计应该满足哪些用户。因此现在,VB在尽力满足以上二者。例如,VB.NET包含了多线程和操作符重载技术,但是IDE并不支持支持VB重构。加入可定制的特性吸引了VB6程序员,而添加操作符重载吸引了OOP程序员。然而,微软承认,排除对VB的IDE重构支持是一个忽略。所以,稍后,他们又开发了Refactor!以用于VB.NET,并支持自由下载。什么是重构呢?根据Martin Fowler的解释,重构是一种改进代码的内部结构而不改变其外部行为的建构方式。(Martin Fowler公开呼吁重视重构的使用;William Opdike被认为是重构的发明人。)
我站在什么立场呢?玩具语言是由玩具制造者使用的。玩具制造者有其自己的市场(特别是在圣诞节期间),但是我有现实的业务逻辑需要解决并且能够用商业级的工具来创建玩具但是不能用玩具创建商业级的工具。原文请找腾讯752018766辣-文^论-文.网
http://www.751com.cn 你不必同意我的观点,但是你应该了解重构,因为甚至是经拙劣修改后的应用程序都有可能变得非常复杂;重构是一种恢复现有代码而不需要改变其行为的按照既定规则操作的方式。更改结构和文持行为都是重构的关键原则。
• 二 重构的原因
重构能够指引你穿越"并不复杂的"代码而且不拆断或改变代码。每个重构都有一个明确的动机-用一系列步骤显示怎样完成该重构及其所希望的结果。一些重构基于现有技术,而另外一些重构基于新的技术,但是所有的重构都被命名并被清晰地建档。
一个常见的重构示例是封装字段。封装字段意味着取得公共变量,使之成为私有变量,然后通过函数提供对它们的存取。这种重构被良好建设,以至它成为一种时髦属性。也就是说,一些程序员仍然使用公共字段,尽管一般人总是会避开这种编程实践。
Visual Studio.NET 2005支持C#重构,但是在VB.NET 2005中并不支持。然而,由于一个整洁的工具Refactor的出现,现在的VB开发者不必再编写他们自己的重构工具了!对于Visual Basic来说,你可以从微软站点自由下载这个工具。尽管你可以手工地实现任何重构,现成的工具使之更为容易简单且更快,而且它们的使用也很有趣。
本文的余下部分将展示使用Refactor实现三种重构!在Visual Basic.Net 2005版本1.0.31中,共有三种情况:封装字段(Encapsulate Field),提取方法(Extract Method),和创建重载(Create Overload)。
• 三 重构:封装字段
重构是一个为提高代码实现质量的定义过程。具体地说,重构是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和文护性。在最简单意义上,重构从代码中提取了一些主观性。作为软件工程师,我们不必再依赖于舆论和意志力来判断编码是好的还是不好的;我们能运用一个客观的标准并同意重构的代码优于非重构的代码。就象设计模式一样,重构是命名的代码模式,带有充分的描述,指令,要想达到的结果。任何一个程序员,不管是否有开发经验,都能读取相应的描述,并象遵循医生的处方一样使用预先确定的指令,并取得可以预料的进步。
一个重构的例子称作封装字段。封装字段意指,使字段名成为私有的并通过公共的属性方法来限制到这些字段的存取。限制到一对象的状态的存取优于无限制的存取,封装字段正是基于相信对数据的限制存取所具有的价值(有些人可能还不同意基本的前提-有约束的存取优于自由的存取-而有些人还认为基于对象进行设计并没有多少好处,更不用争论重构是良性的还是非良性的问题了。不过,本文假定是良性的重构)。
封装字段的观点在于相信-公共数据是糟糕的。为了完成封装字段,把一个公共字段改变为一个私有字段并添加存取器方法来读写现在成为私有字段的值。在VB.NET中的getter和setter实际上仅仅是方法的一些方便的符号-允许你在调用方法时,从外部象对待一个字段一样操作属性。这些方法意味着你可以对该字段进行包装检查。
假定你有一个名字为HeartRate的公共字段-它每隔一分钟调节一位病人的心跳。坏的编码可能把HeartRate设置到500并且,象Emeril所说的,"欺骗!"病人是死了。为了防止把HeartRate设置得太高,你可以用属性方法来保护它。你可以用鼠标右击字段HeartRate,选择"Refactor!",然后选择"Encapsulate Field"。你看到在你的IDE中的操作类似于此。然后,你将使用向下的箭头移动目标选择器(红箭头和线)到插入点并按回车键。修改后的代码看上去如列表1所示
列表1:HeartRate字段被Refactor!所封装
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
End Class
在列表1修改过的代码中,如果不使用公共属性HeartRate1,那么是无法改变HeartRate的。为了确保不把HeartRate设置得太高,你可以在Set方法中加入一些额外的代码。
• 四 重构:提取方法原文请找腾讯752018766辣-文^论-文.网http://www.751com.cn
在编码中一种最常见的问题是,函数太长。小的函数可以重用而且更为容易地被重新改编进新的行为中。一般情况下,很长的代码关系紧密的函数通常仅用于限制非常严格的情况下。为了使代码易于重用,你可以提取代码片断以形成一些命名方法。除了这些命名的方法要易于重用外,其命名还要清晰地解释该方法的目的。为使用提取方法,选择一段你想要转换成一个命名方法的代码片断,然后在选择的代码片断上右击鼠标,并且选择"Refactor!|提取方法"。为了说明问题,我使用了一个简单的for循环-它把HeartRate向控制台输出100次。如果你仅有一个可用的重构,那么可以使用一键重构-通过按下Ctrl+~-这可以激活重构并且显示一个动作提示。再一次,在它的当前位置前后移动选择器并且按下回车键。在按下回车键后,方法PseudoLongMethod和新提取的方法被修改,详见列表2。上一页 [1] [2] [3]
软件工程Visual Studio 2005实现VB重构英文文献及翻译 第3页下载如图片无法显示或论文不完整,请联系qq752018766