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

简介: 所谓重构(Refactoring),是指对软件程序进行重新改写或调配,那干嘛不直接叫Rewrite?意义当然不一样,因为Rewrite只是单纯地改写,不一定有什么了不得的意义,而重构是含有目的性的改写,或重新优化整个程序架构,其中甚至有“方法论”在里头,也就是有许多程序方法学的指导性方针,“重构”一

本节书摘来自异步社区《圣殿祭司的ASP.NET4.0专家技术手册》一书中的第1章,第10节,作者: 奚江华,译者: 武海军 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1-10 程序代码重构

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

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


14c0895b6bee7801553f70eab73d67c1a88166a5

虽然“重构”并不一定需要借助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所示。


f316fc78af0f0330a21184eca75056ce2b32ab60

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


943653a14dc470f725d0f28f0a7800620b43f211

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


d5b421c8db0c992e13afb3e7e673b9066c0f3d77

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

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


1887c07d5bab9a6bb627b43a7f5de7d94737f1dc

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

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


700389025fee6119a2fd8a99da6be3fe878ee2b3

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

相关文章
|
XML 开发框架 .NET
LabVIEW中加载.NET 2.0,3.0和3.5程序集
LabVIEW中加载.NET 2.0,3.0和3.5程序集
329 4
|
10月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
454 13
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
725 13
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
267 2
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
231 0
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
928 0
|
Linux C# iOS开发
如何用 WinDbg 调试Linux上的 .NET程序
【7月更文挑战第13天】 1. `dotnet-dump`: Collects process dumps with `dotnet-dump collect -p <process_id>`. 2. `lldb`: Debugs Mono runtime apps on macOS/Linux. 3. **Visual Studio Code**: Remotely debugs .NET via the C# extension. 4. **JetBrains Rider**: Supports remote debugging of .NET on Linux.
212 2
|
开发框架 NoSQL .NET
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
188 0
|
Web App开发 数据采集 开发框架
在.NET程序中整合微软的Playwright,使用 Playwright 的最佳实践和技巧
在.NET程序中整合微软的Playwright,使用 Playwright 的最佳实践和技巧
|
开发框架 .NET 开发工具
LabVIEW加载.NET程序集
LabVIEW加载.NET程序集
225 1