NO IMAGE

 

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”,然後選擇“插入程式碼段”命
 
– 通過上下文選單使用程式碼段
• 右擊游標,然後從上下文選單中選擇“插入程式碼段”命令