用VS.NET 2005重构你的代码

简介:
引:作为程序员,我们都在编写各种各样的代码,然而有些程序员编写的代码则更为优秀些。差别是显然的。编写好的代码并不是所有的开发者都能够掌握的技巧。但是,这也意味着,这种技巧能够被改进。这种技能之一就包括重构你或其他人编写的代码。
   一. 简介

作为程序员,我们都在编写各种各样的代码,然而有些程序员编写的代码则更为优秀些。差别是显然的。编写好的代码并不是所有的开发者都能够掌握的技巧。但 是,这也意味着,这种技巧能够被改进。这种技能之一就包括重构你或其他人编写的代码。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提供了必要的工具来快速地重构你的代码并且改进它的整个组织,结构和可读性。  























本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/59751,如需转载请自行联系原作者



相关文章
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
195 1
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
495 13
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
240 3
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
535 1
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
272 3
|
Kubernetes 监控 Devops
【独家揭秘】.NET项目中的DevOps实践:从代码提交到生产部署,你不知道的那些事!
【8月更文挑战第28天】.NET 项目中的 DevOps 实践贯穿代码提交到生产部署全流程,涵盖健壮的源代码管理、GitFlow 工作流、持续集成与部署、容器化及监控日志记录。通过 Git、CI/CD 工具、Kubernetes 及日志框架的最佳实践应用,显著提升软件开发效率与质量。本文通过具体示例,助力开发者构建高效可靠的 DevOps 流程,确保项目成功交付。
447 0
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
450 1
|
前端开发 JavaScript C#
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
573 0
|
微服务 API Java
微服务架构大揭秘!Play Framework如何助力构建松耦合系统?一场技术革命即将上演!
【8月更文挑战第31天】互联网技术飞速发展,微服务架构成为企业级应用主流。微服务将单一应用拆分成多个小服务,通过轻量级通信机制交互。高性能Java Web框架Play Framework具备轻量级、易扩展特性,适合构建微服务。本文探讨使用Play Framework构建松耦合微服务系统的方法。Play采用响应式编程模型,支持模块化开发,提供丰富生态系统,便于快速构建功能完善的微服务。
346 0