《圣殿祭司的ASP.NET4.0专家技术手册》----1-10 程序代码重构

1-10 程序代码重构

圣殿祭司的ASP.NET4.0专家技术手册
所谓重构(Refactoring),是指对软件程序进行重新改写或调配,那干嘛不直接叫Rewrite?意义当然不一样,因为Rewrite只是单纯地改写,不一定有什么了不得的意义,而重构是含有目的性的改写,或重新优化整个程序架构,其中甚至有“方法论”在里头,也就是有许多程序方法学的指导性方针,“重构”一词其实存在软件界已久,而Java的Eclipse或NetBeans开发工具对“重构”也提供大量功能,如图1-19所示。

附注 Martin Fowler对重构的定义是:“对软件系统进行改造的程序,在不改变程序外部行为的情况下,以增进系统内部结构。”

虽然“重构”并不一定需要借助IDE工具,用人工照样能够进行,只是万一项目应用程序非常庞大,如几十人到上百人合力开发的项目,程序代码几十万行到上百万行,要以人工来进行重构不但困难,而且会错误百出。故有了工具的辅助,重构工作会进行得更顺利,大量地节省时间,消除人为错误。VS 2010提供下列重构功能:

提取方法(Extract Method);
重新命名(Rename);
封装字段(Encapsulate Field);
提取界面(Extract Interface);
删除参数(Remove Parameters);
重新排列参数(Reorder Parameters)。
以下举两个范例说明重构功能的应用。

范例1-2 使用重构的提取方法
一般而言,有的人会很直接地将ADO.NET程序写在按钮的Click事件中,这是不好的做法。比较好的做法是将它提取出来成为一个独立方法,或者是写成一个可重复使用的类别,故在此使用提取方法,将【读取员工数据】按钮的Click事件中ADO.NET程序提取出来,重构成为一个独立方法,请参考ExtractMethod.aspx程序,具体步骤如下。

先将欲重构的整段ADO.NET程序选中,如图1-20所示。

在选中区域单击鼠标右键,在弹出的菜单中选择【重构】→【提取方法】,如图1-21所示。

输入新方法的名称“ReadEmployees”,单击“确定”按钮,程序一瞬间就被重构了,如图1-22和图1-23所示。

范例1-3 使用重构的重新命名
再来看第二个例子,接着相同程序ExtractMethod.aspx。也许有的人嫌当初的方法名称ReadEmployees太长,想要缩短;或是方法名称当初命名不够好,想要改名。因此,重构的“重命名”刚好派上用场,具体步骤如下。

在ReadEmployees方法名称上按鼠标右键,在弹出的菜单中选取【重构】→【重命名】,如图1-24所示。

由于原来的“ReadEmployees”名称太长,且名称所传达的字义也不够明确,因此给它取一个较短且意义明确的名称“EmpInfo”。

Visual Studio很贴心地提供预览功能,提示哪些地方将会变更,让你确认是否符合预期;此外,若这个方法在程序中被多个事件调用,还可以在复选框中做进一步勾选,确定哪些要应用更新,如图1-25所示。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-10-04 19:50:28

《圣殿祭司的ASP.NET4.0专家技术手册》----1-10 程序代码重构的相关文章

《圣殿祭司的ASP.NET4.0专家技术手册》----2-9 集合初始化程序

2-9 集合初始化程序 圣殿祭司的ASP.NET4.0专家技术手册集合初始化程序(Collection Initializer)与上一节的对象初始化程序很像,只不过集合初始化程序的对象是集合类,且是实现IEnumerable功能的集合. 而使用集合初始化程序来初始化集合,究竟有什么好处?好处是较传统语法精简快速. 范例2-6 集合初始化程序的应用在此将建立List集合,而集合element成员为模特的名字,且看传统泛型List集合语法相较C# 3.0集合初始化程序的差异及精简程度,请参考Coll

《圣殿祭司的ASP.NET4.0专家技术手册》----1-1 ASP.NET平台的三分天下

1-1 ASP.NET平台的三分天下 圣殿祭司的ASP.NET4.0专家技术手册 如果访问微软www.asp.net网站,会发现ASP.NET技术目前有3位成员:Web Form.MVC和Web Pages,如图1-1所示.它们各有不同的定位与特色,彼此的开发方式也不相同.目前,使用人数与市场占有率最高的仍是Web Form,而MVC近两年有不少技术玩家和项目采用,至于Web Pages,则是另外的Web Matrix开发工具预定的网页开发技术,它走更易于使用的开发路线. 你心里可能有疑问:"为

《圣殿祭司的ASP.NET4.0专家技术手册》---- 1-6 VS 2010 SP1安装与三个扩展管理工具

1-6 VS 2010 SP1安装与三个扩展管理工具 圣殿祭司的ASP.NET4.0专家技术手册 2011年3月,微软推出VS 2010 SP1软件补丁,里面包含许多新功能与问题修正,其中与Web开发相关新功能有: IIS 7.5 Express精简版网页服务器的支持(IIS 7.5 Express需额外下载安装): SQL Server CE 4.0的支持(SQL Server CE 4.0需额外下载安装): Razor语法支持: 可部署的依赖性支持(Deployable dependenci

《圣殿祭司的ASP.NET4.0专家技术手册》----1-2 .NET 4.0平台新功能概览

1-2 .NET 4.0平台新功能概览 圣殿祭司的ASP.NET4.0专家技术手册 .NET平台版本从1.0.1.1.2.0.3.0.3.5不断演进.最新4.0版的重要改进如下: NET Framework 4.0 Visual C# 2010 Visual Basic 2010 Visual F# 2010(或F# 2.0) 新的CLR 4.0运行时 DLR动态语言运行时(Dynamic Language Runtime) ASP.NET 4.0 ASP.NET MVC 2.0(最新版为4.0

《圣殿祭司的ASP.NET4.0专家技术手册》----2-4 DLR动态执行环境

2-4 DLR动态执行环境 圣殿祭司的ASP.NET4.0专家技术手册 在.NET 4.0平台下有3个重要动态角色:①dynamic动态类型.②IronPython与IronRuby动态语言.③DLR(Dynamic Language Runtime)动态执行环境,前两者之所以能够存在,在于DLR的创建,DLR克服了原本.NET平台无法支持动态语言的限制,在DLR基础架构的支持下,便能衍生出动态类型.动态语言的诸多应用,如图2-2所示. 微软列举DLR的好处有: 简化将动态语言移植到.NET F

《圣殿祭司的ASP.NET4.0专家技术手册》----1-3 ASP.NET 4.0技术概览

1-3 ASP.NET 4.0技术概览 圣殿祭司的ASP.NET4.0专家技术手册 1-3 ASP.NET 4.0技术概览ASP.NET 4.0技术概览 ASP.NET 4.0是在ASP.NET 2.0及3.5基础上,添加了一些新技术,一方面保持适当幅度创新,另一方面也保持对旧版本的兼容与延续性.例如,图表控件的内建.Silverlight 5.ASP.NET AJAX 4.0.jQuery.C# 4.0.VB 10.F#.IronPython.IronRuby.LINQ.Entity Fram

《圣殿祭司的ASP.NET4.0专家技术手册》----2-3 C# 4.0静态基础融入动态能力

2-3 C# 4.0静态基础融入动态能力 圣殿祭司的ASP.NET4.0专家技术手册 在了解静态与动态语言后,大家直觉上可能会以为这是二元的对立,非黑即白,不是静态语言,就是动态语言.但您是否想过静态和动态之间是可以兼具或混合的可能性?例如,静态语言为获取动态语言优点,而融入了一些动态语言的功能,然后又保持静态语言的优势,如类型安全.优化.高效率. 是的,.NET 4.0正是以这个方向去改造,在原本C#.VB静态语言基础上,加上动态语言的一些特性与优势,这样就达到以静态为主,动态为辅之目的,让C

《圣殿祭司的ASP.NET4.0专家技术手册》----1-8 .NET 4.0内建的图表控件

1-8 .NET 4.0内建的图表控件 圣殿祭司的ASP.NET4.0专家技术手册 以往ASP.NET 3.5要使用图表控件,必须再另外下载安装,但到了.NET 4.0,图表控件已变成内建,在ASP.NET 4.0项目中就可以直接使用,如图1-17所示,省去了很多麻烦. .NET 4.0图表控件联机帮助文件: http://msdn.microsoft.com/zh-tw/library/dd456632.aspx .NET 3.5图表控件范例程序: http://goo.gl/Pz4I1 .N

《圣殿祭司的ASP.NET4.0专家技术手册》----2-1 C# 4.0语言新功能

2-1 C# 4.0语言新功能 圣殿祭司的ASP.NET4.0专家技术手册 C# 4.0新增的语言功能,除了命名实参和可选实参(VB早已支持)较为常用,其他功能几乎是从动态基础衍生出来的便利性或灵活性,新功能如下: 命名实参和可选实参(Named and Optional Arguments): Dynamic动态类型(Dynamic Type): 共变量与反变量(Covariance and Contravariance): Office可程序性支持(Office Programmabilit