分享
 
 
 

用VS.NET 2005重构你的代码

王朝c#·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

一. 简介

作为程序员,我们都在编写各种各样的代码,然而有些程序员编写的代码则更为优秀些。差别是显然的。编写好的代码并不是所有的开发者都能够掌握的技巧。但是,这也意味着,这种技巧能够被改进。这种技能之一就包括重构你或其他人编写的代码。VS.NET 2005包括一组有助于你掌握这一方法的特征。本文正是想讨论什么是重构以及VS.NET 2005是怎样帮助你重构你的代码的。

二. 何谓重构?

作为一个开发者,我们大家都在用一种或多种语言编写代码。然而,我们所编写的代码在组织,安排,可读性和结构方面往往不是最优秀的代码。当我们再次回顾我们的代码时,我们经常会认识到需要对之进行进一步的改进甚至在某些地方需要对之进行重写。这种改进我们的代码的过程称为"重构"。注意,术语"重构"意味着,我们在改进代码而不是改变其功能或含义。

一些常见的重构任务包括:

· 改变方法的签名

· 重命名变量

· 基于现有代码创建接口

· 把一段代码转变成一个独立的方法

三. 重构(Refactor)菜单

现在我们来讨论最令人感兴趣的内容。VS.NET 2005中包括一个菜单"Refactor",你可以用它来实现一些常见的重构任务。下图显示出这个Refactor菜单和它的菜单项。

四. 重命名变量,属性和方法

在很多情况下,当你写完大量的代码时才发现应该更改某些变量、属性和方法的名字。最常见的理由就是改进其可读性。传统的方法是使用"编辑"菜单中的"查找和替换"选项。遗憾的是,我们的代码并不是一个工作文档,因而调用"查找和替换"可能并不十分有效。而且,偶然替换不想要的符号的可能性是很大的。"Refactor"菜单下的"Rename"菜单选项能够帮助你容易地完成这一任务。

为此,你需要转到你想更改的属性或方法名处,然后选择"Rename"菜单选项。这将打开一个如下显示的对话框:

之后,你可以输入变量、属性或方法的新名,然后点击OK以便在每处都改变它。注意,在你真正应用它们之前,你可以预览所作的改变。下图显示出"Preview"对话框。你可以观察一下你不选择某些位置时所带来的变化。

另外,你还能控制是否你想要改变在注释和字符串符号中的名字。

五. 提取一个方法

让我们考虑一种典型的情形。你开始编写一个很长的方法-它包含一些非常复杂的算法集合。在完成该方法以后,你可能意识到它变得太大和太复杂了,以至于其它小组成员无法容易地理解它。因此,你决定把它拆分成多个小函数。这不仅会简化你的代码而且还能够改进其易读和可维护性。"Refactor"菜单下的"Extract Method"选项正是适合这一工作。

为了使用这个菜单选项,你必须选择你想分离为一个方法的代码块,然后点击"Extract Method"菜单选项。下图展示了"Extract Method"对话框。

一旦你输入了要创建的新方法的名字并且点击OK,那么它为你完成两件事情:

· 它根据你的每一次选择创建一个新的方法并且替换其中的所有选择的代码

· 它用一个到这个新创建方法的调用来替换选择的行

六. 创建包装类级变量的属性

让我们接受这样的事实-许多开发者都习惯把类级变量(字段)暴露给外界。由于每一个对象都属于面向对象编程,所以开发者应该允许通过属性或方法来存取变量。这种情况可以使用Refactor菜单下的"Encapsulate Field"选项来进行处理。

为此,选择你想包装在一个属性中的类级变量并且选择"Encapsulate Field"选项。这将打开一个如下图所示的对话框:

你需要输入该属性的名字并且决定是否你想从类外或类内部更新到该变量的参考。就象"Rename"对话框一样,你可以在应用之前先预览一下所作的改变。

七. 提取接口

有时,在你创建完一个类后才发现你还有其它一些类具有类似结构但是仅具有不同的实现。这是使用接口的一种典型的情形,Refactor菜单下的"Extract Interface"选项可以帮助你完成这一任务。

为此,你需要位于这个类中,并且选择"Extract Interface"以弹出一个如下图所示的对话框:

你需要指定接口名,存储接口的文件名以及要包含到该接口中的成员。点击OK创建一个新文件并且在其中创建一个方法。而且,你从其中提取接口的类将被自动标记以实现这个接口。

八. 把本地变量改进为方法参数

另一种常见的场所是把一个方法中的本地变量转换为一个方法参数。在这种情况中,Refactor菜单下的"Promote local variable to parameter"选项有助于实现这一目标。这只需要把你的定制放到你已经声明变量的代码行上并且点击这个选项。你会发现,现在该变量看起来就象一个方法参数,而且所有到该方法的调用都得到相应的更新。注意,为了使这个选项能够工作,有必要把这个变量初始化为某个值。

九. 删除方法参数

你还可能需要删除一些或所有的方法参数。在这种情况下,Refactor菜单下的"Remove Parameters"选项正是完成此任务的。

为此,你需要位于其参数需要删除的方法的内部,并且选择"Remove Parameters"选项。这将产生一下如下图所示的对话框:

然后,你可以删除需要的参数。所有的方法调用连同接口定义也都将被更新-根据新的签名。就象以往一样,你可以在应用之前先预览一下变化。

十. 重新安排方法参数的顺序

添加方法参数后,删除它们很简单。但是,能够重新对之进行排序呢?别担心。有一个"Reorder Parameters"选项可以实现这一目标。这个选项仅能在具有两个或多个参数的方法上工作。当选择它时,将打开一个如下图所示的对话框:

你可以把参数往上移或往下移,并且观察预览结果。就象删除参数选项一样,所有的方法调用随着每一个新的参数序列将会自动地更新。

十一. 小结

重构相当重要,而且也是许多开发场所下的最常见的需求。为此,VS.NET 2005提供了必要的工具来快速地重构你的代码并且改进它的整个组织,结构和可读性。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有