热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VS2005中用CodeSnippets提高开发效率

VS2005中用CodeSnippets提高开发效率新近编译的一篇关于vs.net2005中codesnippets的文章,原文发表在http:dev.yesky.c
VS2005中用Code Snippets提高开发效率
新近编译的一篇关于vs.net 2005中code snippets的文章,原文发表在http://dev.yesky.com/msdn/432/2340932.shtml上,下面转过来这里

在VS.NET 2005中,新增加了许多新的特性和功能。其中在方便用户编程方面有了很大的改进,比如新增加了code snippets(代码片断助手)功能。所谓的code snippets,是用户可以在编程过程中,将经常要用到的一些常用代码或者值得收藏起来的代码保存起来,在要使用的时候就可以方便地调用出来。本文将介绍如何将vs.net 2005自带的code snippets加到已有的应用程序中去,以及如何建立自己的snipeets,如何使用开源的snippet editor。

  首先我们来看下如何往已有的程序中插入code snippet。在vs.net 2005中,已经预先设置了很多平时我们会用到的code snippets了,比如for loops语句,又或者调用sqlcommand对象的executeReader方法等代码片段,要用到的时候,只需要调用这些code snippets就可以很方便的操作。

  要在现有的代码中插入code snippets,在要插入的位置,右键弹出的菜单中,选择"insert snippet"或者同时按下CTRL+K+X组合键。这时会在当前光标位置弹出系统的snippet供用户选择,如果要取消返回代码状态,则只需要按ESC键就可以取消了。

  Snipptets会根据你所使用的语言而有所不同而显示不同的格式,如果你使用的是VB.net,则snippets会以图1的方式显示,如果使用的是c#,则以图2的方式显示,如果当前编辑的是xml,则以图3的方式显示。
   







下面我们来具体看一个例子,假设你要为一个类添加属性,一般来说你要输入一大段代码,比如还要添加getter/setter方法。如果用snippets的话,将会十分方便。首先,我们在要增加属性的代码中,如果使用的是c#,按上文说的方法,右键弹出菜单中选择"insert snippets",然后再选择"visual c#",再在弹出的菜单中选择"prop"(property的缩写),又或者直接输入prop,再按tab键,则可以自动生成一个添加属性的普通代码,包括了getter/setter方法,当然你还要改参数的名称,如下代码所示:

private int myVar;
public int MyProperty
{
 get { return myVar; }
 set { myVar = value; }
}

  要注意的是,在上面的代码中,比如要修改myVar为另外的参数名,只需要点选myVar这个参数,此时参数会被一个绿色的小方框包住,当你修改为自己的参数后,只需要按回车键,则下文中所有的相关参数都会被同时修改。

  如果使用的是vb.net,则也有两种方法实现。可以在要插入的位置选insert snippets,再选择"common code patterns",在弹出的菜单中继续选择" Properties and Procedures",最后选择"Define a Property",则会自动生成添加属性的普通代码;如果要简单快捷的话,则可以输入property,并按TAB键,则同样可以实现,生成的代码如下所示:

Private newPropertyValue As Integer
Public Property NewProperty() As Integer
Get
 Return newPropertyValue
End Get
Set(ByVal value As Integer)
 newPropertyValue = value
End Set
End Property

  值得一题的是,c#和xml snippets都有一个额外的功能叫"Surround with",就是说可以将已经存在的一段代码放到snippets助手中去,比如有下面的代码:

string[] arr = new string[4] {"This","is","a","test"};
string DisplayString=string.Empty;
DisplayString += arr[0];
MessageBox.Show(DisplayString);

  假如你想增加一个循环语句,来实现字符串的相加,那么可以先用鼠标选择DisplayString += arr[0];,然后在右键弹出的菜单中选择"surround with",再在弹出的菜单中选择"for",则系统会自动添加如下所示的语句:

for (int i = 0; i < length; i++)
{
 DisplayString += arr[0];
}

  接下来我们谈下如何管理这些代码snippets。在vs.net 2005中,使用code snippets manager管理器来管理这些snippets,code snippets manager在tools工具菜单下可以找到,如下图:


对于vb.net,visual c#,Visual j#,xml,snippets管理器都分类列出了有哪些代码助手,点选每一个代码片断,同时列出了其存放的位置。还提供了增加,删除,导入,在线查询代码助手的功能。
最后,我们看下如何自定义snippets。首先研究下snippets的结构,以上文提到的属性snippets为例子,我们先在snippets管理器中,找到prop这个snippets,然后记下其所在的路径,然后再用编辑工具打开这个文件,可以看到如下的代码,注意是以xml格式组织的。

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>prop</Title>
<Shortcut>prop</Shortcut>
<Description>Code snippet for property and backing field</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<ToolTip>Property type</ToolTip>
<Default>int</Default>
</Literal>
<Literal>
<ID>property</ID>
<ToolTip>Property name</ToolTip>
<Default>MyProperty</Default>
</Literal>
<Literal>
<ID>field</ID>
<ToolTip>The variable backing this property</ToolTip>
<Default>myVar</Default>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[private $type$ $field$;

public $type$ $property$
{
 get { return $field$;}
 set { $field$ = value;}
}
$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

  在上面的代码中,其中的header部分简单描述了关于这个snippets的信息,如名称,快捷方式,作者,备注等。在<snippets>节点下,则逐个定义了在snippets中出现的属性,其中<default>指出了该属性默认的值。而在关键部分<code>,用<![CDATA]>的方式定义了snippets的基础架构,其中用$参数名的方式定义每个属性,十分简单。

  如果要创建自己的snippets,是十分简单的,最简单的是使用比如记事本等编辑工具,新建一个后缀为snippet的 XML文件,仿照上面的格式就可以设计了。当完成后,可以在snippets管理器中通过导入完成的snippet就可以增加一个新的snippet了。此外,还可以到http://msdn.microsoft.com/vbasic/downloads/tools/snippeteditor/去下载一个snippet 编辑器,可以方便地进行编辑snippet。

  在启动这个snippets编辑器后,默认使用的是vb.net,如下图所示。如果想查看已经存在的snippets,可以先在鼠标右键弹出的菜单中选择"add path",然后添加vb.net的snippets所在的路径(默认是vs.net 2005安装目录下\VB\Snippets子目录中),则可以很方便地查看已经存在的snippets的代码了。如果想查找已有的snippets,则可以在左上角的文本框中输入要搜索的内容,再按绿色的apply按钮就可以查找了。

假如要创建自己的snippets时,可以首先在左则已有的目录下增加一个snippets,比如现在要创建一个叫InstanceProperty的snippets,可在common code patterns分类下的proerties and procedures子类添加,将其命名为InstanceProperty。

  接着,在右边的编辑窗口中,可以按照snippets的规则写入如下的代码:

Private $PrivateVariable$ As $PropertyType$
Public Property $PropertyName$() As $PropertyType$
Get
 If $PrivateVariable$ Is Nothing Then
  $PrivateVariable$ = New $PropertyType$
 End If
 Return $PrivateVariable$
End Get
Set(ByVal value As $PropertyType$)
 $PrivateVariable$ = value
End Set
End Property

  写完后,可以点选priview选项卡,来进行效果的预览。而在下方的replacement选项卡中,是用来进行参数默认的设置的,当设置默认值后,只要用户一调用该codesnippet,则对应的参数转换为该默认值,比如要将PrivateVariable的默认值设置为abc, PropertyType的值可以默认设置为User自定义类型,PropertyName设置为setUser,则将上述snipeet保存后,下次调用snippet时,会转换为以下代码:

Private abc As User
Public Property setUser() As User
Get
 If abc Is Nothing Then
  abc = New User
 End If
Return abc
End Get
Set(ByVal value As String)
 abc = value
End Set
End Property

  小结

  本文简单介绍了在vs.net 2005中,如何使用code snippets代码助手简化编程,用户可以根据自己的需要,加入更多自定义的代码助手功能,这将大大提高工作效率。
posted on 2006-03-21 20:16 jackyrong的世界 阅读(...) 评论(...) 编辑 收藏

转:https://www.cnblogs.com/jackyrong/archive/2006/03/21/355238.html



推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
摋無赦PK110_147
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有