在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的方式顯示。

圖1

圖2

圖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,則也有兩種方法實現??梢栽谝迦氲奈恢眠xinsert 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代碼助手簡化編程,用戶可以根據自己的需要,加入更多自定義的代碼助手功能,這將大大提高工作效率。
:http://www.7dspace.com/doc/24/0603/200632121214937175_2.htm