代码段(Code Snippets)

 
1. 前言
开发人员不喜欢打字。如果你希望提高开发人员的生产力,减少键入的数量,这也同时减少打字稿的数量以及因此产生的编译器错误,这些都极大分散了开发人员的注意力。代码重用是开发人员收集代码的另一个原因。即使单个应用程序也会大量地由小而公共的代码段组成,在几乎每个程序中都会有相同的代码元素:循环、类、异常处理等等。开发人员传统上是对代码进行剪切和粘贴以避免重复键入。但是这具有相当的局限性,包括有限的持久性,应该有更可行的解决方案。
这个解决方案就是在Visual Studio 2005中引入的代码段技术。代码段是可重用的源代码的容器。一个代码段是代码的一个别名。插入一个代码段就是在光标处或选中的地方将它所代表的代码插入到源文件中。代码段提高了开发人员的效率和准确性。
2. 初识代码段
(1). 什么是代码段?
将一段代码行提取出来,可以多次重复的使用。VS IDE提供对代码段的完整支持、使代码编写更快、更容易、更可靠。
 
一个代码段的例子
 
(2) . 系统默认代码段
对于开发人员的例行任务,Visual Studio 2005有默认代码段。默认代码段是代码扩展和外侧代码的混合。默认代码段出现在IntelliSense完成列表和代码选择器中。表1列出了一些默认代码段。
1 默认代码段
代码段名
   
#if
该代码段用 #if #endif 命令围绕代码
#region
该代码段用 #region #endregion 命令围绕代码
~
该代码段插入一个析构函数
attribute
该代码段插入一个定制属性的声明,该定制属性是从 System.Attribute 派生的一个类
checked
该代码段用一个 checked 块围绕代码
class
该代码段插入一个类声明
ctor
该代码段插入一个构造函数
cw
该代码段插入一个 Console.WriteLine 语句
do
该代码段用一个 do while 块围绕代码
else
该代码段插入一个 else
enum
该代码段插入一个 enum 声明
equals
该代码段重写从 System.Object 类型继承的 Equals 方法
exception
该代码段插入一个应用程序异常的声明,该异常派生自 System.Exception
for
该代码段用一个 for 循环围绕代码
foreach
该代码段用一个 foreach 循环围绕代码
forr
该代码段用一个 decrementing for 循环围绕代码
if
该代码段用一个 if 块围绕代码
indexer
该代码段插入一个索引器函数
interface
该代码段插入一个接口声明
iterator
该代码段插入一个迭代器
interindex
该代码段插入一个命名的迭代器和索引器
invoke
该代码段插入并调用一个事件
lock
该代码段用一个 lock 块围绕代码
mbox
该代码段插入 MessageBox.Show 语句
namespace
该代码段用一个 namespace 围绕代码
Prop
该代码段插入一个属性和后备字段
propg
该代码段插入一个只读属性。只读属性只有一个 get 方法
Sim
该代码段插入一个返回一个整数的静态入口方法
struct
该代码段插入一个 struct 声明
Svm
该代码段插入一个返回为 void 的静态入口方法
switch
该代码段插入一个 switch 语句
Try
该代码段插入一个 try-catch
Tryf
该代码段插入一个 try-finally
unchecked
该代码段用一个 unchecked 块围绕代码
unsafe
该代码段插入一个 unsafe
using
该代码段用一个 using 块围绕代码
while
该代码段用一个 while 循环围绕代码
 
(3). 代码段管理器
用代码段管理器来管理代码段,包括添加、移除、导入和搜索代码段。
代码段管理器可以在“工具”菜单里打开(见图4.33)。在代码段管理器里显示的文件夹是代码段目录,打开一个文件夹来查看一个代码段。对于每个代码段提供了以下信息:
  “ 代码段管理器 对话框
l   代码段描述
l   代码段的别名或快捷方式
l   代码段类型
l   代码段的作者
对话框里的“添加”按钮向代码段目录列表添加另一个目录。一个代码段目录包含代码段文件,这是带有.snippet后缀的XML文件。对于C#,默认的代码段目录是My Code Snippets,Refactoring和Visual C#。“移除”按钮从列表中移除一个代码段目录。“导入”按钮导入一个代码段文件。用“联机搜索”按钮来浏览代码段,这个按钮打开一个通用搜索窗口,开发人员可以通过它搜索代码段。找到正在搜索的代码段后,就可以将其下载到本地机器。
下载网上所找到的代码段可能会引起安全问题,代码段无法保证所有的XML都是无害的。此外,代码段也可能隐藏有恶意脚本,在代码段中定义的“帮助URL”元素可能会暗地里运行一个脚本。还有,代码段可能会不加任何提示地添加引用,在引用中可能会对函数进行恶意调用。长代码段可能会隐含有害代码。在下载涉及数据库和代码访问安全、基于角色的安全或验证代码的时候要小心。较好的办法是在应用程序使用代码段之前,先仔细检查下载的代码段的源代码。
 
3. 解密代码段
(1). 如何定义代码段
<CodeSnippets
xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>
My Snippet
</Title>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[MessageBox.Show("Hello World");]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
 
对于这段XML的解释
• Header 包含以下子元素:
– Author : 指定代码段的作者姓名。
– Description : 指定有关 IntelliSense 代码段内容的描述信息。
– HelpUrl : 指定提供有关代码段的更多信息的 URL
– Keywords : 为代码段指定自定义关键字。
– Shortcut : 指定用于插入代码段的快捷方式文本。
– SnippetTypes : 指定 Visual Studio 插入代码段的方式。
– Title : 指定代码段的标题。
 
• Snippet 包含以下子元素:
– Code : 提供用于容纳 IntelliSense 代码段的短代码块的容器。
– Declarations : 指定构成代码段可编辑部分的文本和对象。
– Imports : 指定 IntelliSense 代码段使用的导入命名空间。
– References : 指定有关代码段所需的程序集引用的信息。
• SnippetTypes : 指定 Visual Studio 插入代码段的方式。
– SurroundsWith :允许将此代码段放置在一段选定的代码周围。
– Expansion :允许将代码段插入到光标处。
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
 
• Code : 提供用于容纳 IntelliSense 代码段的短代码块的容器。
属性如下:
– Language: 代码语言 ( 必选 )
– Kind : 指定代码段所包含的代码类型,并据此指定可以插入代码段
的位置。可用的值有 method body method decl type decl
page file any
 
• Declarations : 指定构成代码段可编辑部分的文本和对象。
包含以下子元素:
– Literal: 定义代码段的可编辑文本。
– Object: 定义代码段的可编辑对象。
如:
<Snippet>
<Declarations>
<Literal>
<ID>SQL</ID>
<ToolTip>Replace with a SQL connection string.</ToolTip>
<Default>"SQL connection string"</Default>
</Literal>
<Object>
<ID>Connection</ID>
<Type>System.Data.SqlClient.SqlConnection</Type>
<ToolTip>Replace with a connection object in your application.</ToolTip>
<Default>dcConnection</Default>
</Object>
</Declarations>
</Snippet>
 
 
4. 使用代码段
如何使用代码段?
通过键盘快捷键
• Ctrl+K Ctrl+X
• Ctrl+K Ctrl+S ( 外侧代码段 )
 
通过 IntelliSense 自动完成使用代码段
键入快捷方式,键入两次 Tab 以调用代码段
 
通过 编辑 菜单使用代码段
编辑 菜单中选择 “IntelliSense” ,然后选择 插入代码段
 
通过上下文菜单使用代码段
右击光标,然后从上下文菜单中选择 插入代码段 命令
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值