【整理】VS2005 IDE新增功能之代码片段、重构和类设计器
代码段(Code Snippets)
代码段定义:将一段代码行提取出来,可以多次重复使用。VS IDE提供对代码段的完整支持、使代码编写更快、更容易、更可靠。在VS IDE中表示为一个以.snippet为后缀名的XML格式文件,我们可以参照现有的代码片段来定义自己的代码片段,下面展示一下IDE自带的for循环代码段的格式。
由于我的VS是安装在D:\Program Files\下面,所以C#自带的代码段位于D:\Program Files\Microsoft Visual Studio 9.0\VC#\Snippets\2052\Visual C#下面。
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>for</Title>
<Shortcut>for</Shortcut>
<Description>for 循环的代码段</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>index</ID>
<Default>i</Default>
<ToolTip>索引</ToolTip>
</Literal>
<Literal>
<ID>max</ID>
<Default>length</Default>
<ToolTip>最大长度</ToolTip>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[for (int $index$ = 0; $index$ < $max$; $index$++)
{
$selected$ $end$
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
上面的代码在程序中调用后,变量名$index$和$max$都会分别被它们的Default属性值替换,如下:
{
}
由上面的格式可以看出,一个CodeSnippet包含一个Header元素和一个Snippet元素,下面分别说一下Header元素和Snippet元素的子元素,如下:
Header元素的子元素
1.Author:指定代码段的作者名称
2.Description:指定有关IntelliSense代码段内容的描述信息
3.HelpUrl:指定提供有关更多代码段的相关URL
4.Keywords:为代码段指定自定义关键字
5.Shortcut:指定用于插入代码段的快捷方式文本
6.SnippetTypes:指定Visual Studio插入代码段的方式
-SurroundsWith:允许将此代码段放置在一段选定的代码周围
-Expansion:允许将代码段插入到光标处
7.Title:指定代码段的标题
Snippet包含以下子元素(红色只在VB.Net中适用)
1.Code:提供用于容纳IntelliSense代码段的短代码块的容器
-Language:代码语言(必选)
-Kind:指定代码段所包含的代码类型,并据此指定可以插入到代码段的位置。可用的位置有:method body、method decl、type decl、Page、file和any
2.Declarations:指定构成代码段可编辑部分的文本和对象
-Literal:定义代码段的可编辑文本
-Object:定义代码段的可编辑对象
3.Imports:指定IntelliSense代码段使用的命名空间
4.References:制定有关代码段所用的程序集引用的信息
使用代码段
-通过键盘快捷键
插入代码段:Ctrl+K+X
外侧代码段:Ctrl+K+S
-通过IntelliSense自动完成使用代码段
键入快捷方式后,连续键入两次Tab键
-通过"编辑"菜单使用代码段
从"编辑"菜单中选择"IntelliSense",然后选择"插入代码段"命令
-通过上下文菜单使用代码段
右击光标,然后从上下文菜单中选择"插入代码段"命令
管理代码段
包括功能:添加、导入和移除代码段
管理方法:VS IDE>>“工具"菜单>>"代码段管理器",界面如下:
重构(Refactoring)
这个功能是我向大家极力推荐的一种功能,定义我就不说了,文字性的东西,我大致说一下它可以解决的问题。由于某种需求的变动,我们原来花费很长时间完成的代码可能要面临修改,比如说修改项目中某个类的方法,修改完成之后我们要在类的外部所有调用该方法的地方都要修改一下,项目小了无所谓,大了的话这样改且不说效率低下,而且你很可能漏掉本该修改的地方,很容易出错,这样就大大降低了我们开发的效率,而我们说的重构就是为我们解决这样的问题的。
有了重构功能后,如果我们要修改某个类下的某个方法,我们只在这个方法定义处修改一下,IDE就会自动为我们修改所有调用了这个方法的地方的代码,省去了我们自己修改这一费力不讨好的工作,大大提高了效率,更把我们从这样我们不喜欢做的工作中彻底解放出来,怎么样,很强大吧~~
VS IDE为我们提供了如下几种重构类型
提取方法:可以通过从现有成员的代码块中提取选定的代码来创建新方法;创建的新方法中包含选定的代码,而现有成员中的选定代码被替换成对新方法的调用。演示如下:
代码自动变成如下所示:
{
const double PI = 3.141592;
double CalculatePaintNeeded(double paintPerUnit, double radius)
{
double area = CalculateArea(radius);
return area / paintPerUnit;
}
private static double CalculateArea(double radius)
{
return PI * radius * radius;
}
}
重命名:提供了一种重命名代码符号(如字段、局部变量、方法、命名空间、属性和类型)标识符的简单方法;此功能除了可以用来更改标识符的声明和调用而外,还可以用来更改注释中和字符串中的名称;可以在代码编辑器、类设计器、对象浏览器(重命名自定义代码)、Window窗体设计器的"属性网格"和解决方案资源管理器。演示如下:
代码自动变为
{
public void Metho(int i, bool b) { }
}
class ProtoClassC
{
void D()
{
ProtoClassA MyClassA = new ProtoClassA();
MyClassA.Metho(0, false);
}
}
封装字段:可以从现有的字段快速创建属性,然后使用对象新属性引用无缝代码;仅当光标与字段声明位于同一行时,此功能才生效。演示代码如下:
确定后代码自动变为
{
private int width;
public int Width
{
get { return width; }
set { width = value; }
}
public int height;
}
class MainClass
{
public static void Main1()
{
Square mySquare = new Square();
mySquare.Width = 110;
mySquare.height = 150;
Console.WriteLine("width = {0}", mySquare.Width);
Console.WriteLine("height = {0}", mySquare.height);
}
}
提取接口:使用来自现有类、结构或接口的成员创建新接口的简单方法;当几个客户端使用类、结构或接口中成员的同一个子集的时候,或者当多个类、结构或接口拥有通用的成员子集的时候,在接口中嵌入成员子集时非常有效;仅当光标定位于包含要提取成员的类、结构或接口中时,才可以访问此功能。
将局部变量提升为参数:提供一种简单的方法,以在正确更新调用站点的同时将变量从局部使用移动至方法、索引器或构造函数参数中;调用"将局部变量提升为参数"时,新增的参数将位于参数列表的结尾处;
移除参数:从方法、索引器或委托中移除参数的一种简单方法,在调用成员的任何位置,都会自动将参数移除以维持逻辑的正确性。
重新排列参数:对方法、索引器或委托中的参数进行重新排列的一种方法;可以通过方法声明或方法调用来重新排列参数,要将光标置于方法声明或委托声明中,而不是置于正文中。
类设计器(Class Designer)
在Visual Studio中,类设计器以类关系图的方式提供了一种可视的设计界面,可用于设计、查看和重构Visual Studio项目中的类和其他类型。
类设计器的功能
设计,你可以通过编辑类关系图来编辑项目代码。你可以添加新元素和删除不想用的元素。您所做的更改将在代码中反映出来。
可视化,你可以查看以图形方式表示的项目中的类型,以便更好的理解项目的结构。通过自定义此视图,您可以突出显示您认为重要的项目的详细信息。你可以保存项目图像,以便在演示或文档中使用。
重构类和类型,可以重写方法、重命名标识符、重构参数,以及实现接口和抽象类。
使用类设计器
将类关系图元素复制到Microsoft office文档
将类关系图导出为图像
打印类关系图
向类关系图添加注释
从类关系图中移除类型形状
从类型关系图中删除类型形状和关联的代码
设计类和类型
在类关系图上创建类型
定义类型之间的继承关系
定义类型之间的关联
重构类和类型
重写类型成员
重命名类型和类型成员
重新排列参数(尽限C#)
实现接口
实现抽象类
将类型成员从一种类型移至另一种类型中
提取到接口(仅限C#)