青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計模式} {C#基礎(chǔ)}

VS2005中用Code Snippets提高開發(fā)效率

 在VS.NET 2005中,新增加了許多新的特性和功能。其中在方便用戶編程方面有了很大的改進,比如新增加了code snippets(代碼片斷助手)功能。所謂的code snippets,是用戶可以在編程過程中,將經(jīng)常要用到的一些常用代碼或者值得收藏起來的代碼保存起來,在要使用的時候就可以方便地調(diào)用出來。本文將介紹如何將vs.net 2005自帶的code snippets加到已有的應(yīng)用程序中去,以及如何建立自己的snipeets,如何使用開源的snippet editor。

  首先我們來看下如何往已有的程序中插入code snippet。在vs.net 2005中,已經(jīng)預(yù)先設(shè)置了很多平時我們會用到的code snippets了,比如for loops語句,又或者調(diào)用sqlcommand對象的executeReader方法等代碼片段,要用到的時候,只需要調(diào)用這些code snippets就可以很方便的操作。

  要在現(xiàn)有的代碼中插入code snippets,在要插入的位置,右鍵彈出的菜單中,選擇"insert snippet"或者同時按下CTRL+K+X組合鍵。這時會在當前光標位置彈出系統(tǒng)的snippet供用戶選擇,如果要取消返回代碼狀態(tài),則只需要按 ESC鍵就可以取消了。

  Snipptets會根據(jù)你所使用的語言而有所不同而顯示不同的格式,如果你使用的是VB.net,則snippets會以圖1的方式顯示,如果使用的是c#,則以圖2的方式顯示,如果當前編輯的是xml,則以圖3的方式顯示。


圖1

圖2

圖3

  下面我們來具體看一個例子,假設(shè)你要為一個類添加屬性,一般來說你要輸入一大段代碼,比如還要添加getter/setter方法。如果用 snippets的話,將會十分方便。首先,我們在要增加屬性的代碼中,如果使用的是c#,按上文說的方法,右鍵彈出菜單中選擇"insert snippets",然后再選擇"visual c#",再在彈出的菜單中選擇"prop"(property的縮寫),又或者直接輸入prop,再按tab鍵,則可以自動生成一個添加屬性的普通代碼,包括了getter/setter方法,當然你還要改參數(shù)的名稱,如下代碼所示:

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

  要注意的是,在上面的代碼中,比如要修改myVar為另外的參數(shù)名,只需要點選myVar這個參數(shù),此時參數(shù)會被一個綠色的小方框包住,當你修改為自己的參數(shù)后,只需要按回車鍵,則下文中所有的相關(guān)參數(shù)都會被同時修改。

  如果使用的是vb.net,則也有兩種方法實現(xiàn)??梢栽谝迦氲奈恢眠xinsert snippets,再選擇"common code patterns",在彈出的菜單中繼續(xù)選擇" Properties and Procedures",最后選擇"Define a Property",則會自動生成添加屬性的普通代碼;如果要簡單快捷的話,則可以輸入property,并按TAB鍵,則同樣可以實現(xiàn),生成的代碼如下所示:

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",就是說可以將已經(jīng)存在的一段代碼放到snippets助手中去,比如有下面的代碼:

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

  假如你想增加一個循環(huán)語句,來實現(xiàn)字符串的相加,那么可以先用鼠標選擇DisplayString += arr[0];,然后在右鍵彈出的菜單中選擇"surround with",再在彈出的菜單中選擇"for",則系統(tǒng)會自動添加如下所示的語句:

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管理器都分類列出了有哪些代碼助手,點選每一個代碼片斷,同時列出了其存放的位置。還提供了增加,刪除,導(dǎo)入,在線查詢代碼助手的功能。
最后,我們看下如何自定義snippets。首先研究下snippets的結(jié)構(gòu),以上文提到的屬性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部分簡單描述了關(guān)于這個snippets的信息,如名稱,快捷方式,作者,備注等。在<snippets>節(jié)點下,則逐個定義了在snippets中出現(xiàn)的屬性,其中<default>指出了該屬性默認的值。而在關(guān)鍵部分<code>,用<![CDATA]>的方式定義了snippets的基礎(chǔ)架構(gòu),其中用$參數(shù)名的方式定義每個屬性,十分簡單。

  如果要創(chuàng)建自己的snippets,是十分簡單的,最簡單的是使用比如記事本等編輯工具,新建一個后綴為snippet的 XML文件,仿照上面的格式就可以設(shè)計了。當完成后,可以在snippets管理器中通過導(dǎo)入完成的snippet就可以增加一個新的snippet了。此外,還可以到http://msdn.microsoft.com/vbasic/downloads/tools/snippeteditor/去下載一個snippet 編輯器,可以方便地進行編輯snippet。

  在啟動這個snippets編輯器后,默認使用的是vb.net,如下圖所示。如果想查看已經(jīng)存在的snippets,可以先在鼠標右鍵彈出的菜單中選擇"add path",然后添加vb.net的snippets所在的路徑(默認是vs.net 2005安裝目錄下\VB\Snippets子目錄中),則可以很方便地查看已經(jīng)存在的snippets的代碼了。如果想查找已有的snippets,則可以在左上角的文本框中輸入要搜索的內(nèi)容,再按綠色的apply按鈕就可以查找了。

  假如要創(chuàng)建自己的snippets時,可以首先在左則已有的目錄下增加一個snippets,比如現(xiàn)在要創(chuàng)建一個叫InstanceProperty的 snippets,可在common code patterns分類下的proerties and procedures子類添加,將其命名為InstanceProperty。

  接著,在右邊的編輯窗口中,可以按照snippets的規(guī)則寫入如下的代碼:

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選項卡,來進行效果的預(yù)覽。而在下方的replacement選項卡中,是用來進行參數(shù)默認的設(shè)置的,當設(shè)置默認值后,只要用戶一調(diào)用該codesnippet,則對應(yīng)的參數(shù)轉(zhuǎn)換為該默認值,比如要將PrivateVariable的默認值設(shè)置為abc, PropertyType的值可以默認設(shè)置為User自定義類型,PropertyName設(shè)置為setUser,則將上述snipeet保存后,下次調(diào)用snippet時,會轉(zhuǎn)換為以下代碼:

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

  小結(jié)

  本文簡單介紹了在vs.net 2005中,如何使用code snippets代碼助手簡化編程,用戶可以根據(jù)自己的需要,加入更多自定義的代碼助手功能,這將大大提高工作效率。

:http://www.7dspace.com/doc/24/0603/200632121214937175_2.htm

posted on 2006-04-20 19:26 夢在天涯 閱讀(1475) 評論(1)  編輯 收藏 引用 所屬分類: C#/.NET

評論

# re: VS2005中用Code Snippets提高開發(fā)效率 2006-04-20 19:40 夢在天涯

想起這個題目,不得不由衷地佩服MS的細心度,我們想到了沒有想到的他都給我們想到了。讓我們盡可能的解放coding之苦。

  程序員,不得不在thinking 和coding之間進行痛苦的折磨,然而coding占去了我們的大量寶貴的時間。我們重復(fù)重復(fù)又重復(fù)著那些一輩子都不會忘掉的代碼,重復(fù)重復(fù)又重復(fù)的重復(fù)著那些被我們敲爛的代碼。

  發(fā)現(xiàn)這個還是一次偶然的機會,我自定義了一個Prop函數(shù),結(jié)果在按下去的時候不小心碰到了Tab鍵結(jié)果出現(xiàn)了以下的代碼:

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

  熟悉的朋友應(yīng)當已經(jīng)發(fā)現(xiàn)這是一個標準的設(shè)置屬性的字段。為什么我輸入了Prop會自出來這些呢?帶著疑問找到了google大法,原來已經(jīng)早就有人發(fā)現(xiàn)了:這是2005的一個特色之一:代碼段。

  代碼段是提供了將現(xiàn)成的代碼段插入到項目中的方法。它可以方便的把我們常用的一些代碼用"快捷鍵"的方式讓我們迅速的輸入到IDE中。這里我不知道怎么形容,暫且用快捷鍵來代替吧。

  具體的輸入方法:例如:我們輸入Prop然后回車,接著按著Tab幾秒鐘,IDE就會自動給我們添加上去代碼段所定義的代碼。而且支持可修改部分,我們可以方便的接著使用Tab來穿梭于各個可修改部分。

  有人會有疑問,這些代碼段怎么來的呢?IDE已經(jīng)給我們自帶了一部分,我們也可以根據(jù)自己的偏好來進行自行創(chuàng)建。

  打開VS2005的 \VC#\Snippets\2052\Visual C# 目錄,我們會發(fā)現(xiàn)有一些以.snippet結(jié)尾的文件,這些就是系統(tǒng)給我們默認定義好的代碼段。我們用文本文檔打開,不難發(fā)現(xiàn)其實就是標準的XML文件?,F(xiàn)對照if代碼段進行一些講解(對應(yīng)文件為if.snippet)??雌鸫a:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"
<CodeSnippet Format="1.0.0">//以上是代碼段的一個標準格式 <Header>
<Title>if</Title>
//代碼段的說明部分,指定代碼段的標題??梢燥@示在代碼段插入和代碼段管理器的代碼段說明部分。
<Shortcut>if</Shortcut>
//代碼段的快捷方式。就是輸入后按著Tab自動產(chǎn)生代碼
<Description>if 語句的代碼段</Description>
//指定代碼段內(nèi)容的說明信息,它可以給我們在使用代碼段的時候提供工具提示,并且可以在代碼段管理器中提供說明
<Author>Microsoft Corporation</Author>
//版權(quán)信息
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
//以上部分指定vs如何插入代碼段。SurroundsWith允許代碼段放置在選定代碼快的周圍,而Expansion的值允許將代碼段插入光標所在的位置。
</Header>
<Snippet>
//此處開始指定代碼的引用、導(dǎo)入、聲明代碼。主體部分
<Declarations>
//指定當前作為代碼段組成部分的文本和對象,對代碼段可以編輯部分。
<Literal>//<Literal> 段定義可編輯的代碼段的文本。他用與標識對代碼快的替換。我們可以使用Tab來進行切換修改。可以按照函數(shù)的概念來理解。這里就是我們傳遞參數(shù)值
<ID>expression</ID>
//替代標識
<ToolTip>要計算的表達式</ToolTip>//提示文本
<Default>true</Default>//默認值
</Literal>//若需多個,則可重復(fù)<Literal>代碼段。
</Declarations>
<Code Language="csharp">
<![CDATA[if ($expression$) { $selected$ $end$ }]]>
</Code>//看code部分代碼段。這里就是我們的核心部分。其中Language可以指定我們在用什么語言開發(fā)的時候使用此類代碼段。
<! [CDATA[部分就是我們標準的C#語法了。if ($expression$)看清楚if()括號部分的代碼,這里就是使用到我們在<Literal>部分定義的替代標識了。以$開始和結(jié)束,由于我們在定義的時候制定了默認值為true,所以在使用代碼段的時候等價于if(true)。而括弧部分就是主體$selected$表示此處可以被選擇,$ end$表示代碼段結(jié)束。
</Snippet>
</CodeSnippet>
</CodeSnippets>

  看,通過上邊的分析,代碼段是不是很簡單。我們在對照一下核心部分代碼:

  代碼段部分代碼:

if ($expression$) { $selected$ $end$ }

  正常語句代碼:

if (條件) { 代碼 }

  了解了這些知識,那么我們該如何創(chuàng)建自己的代碼段呢。最簡單的方法就是用記事本,當然要十分熟悉這些語句。另外IDE也給我們提供了創(chuàng)建文件的方法。

  [文件]→[新建文件] →[XML文件],重新命名為:mytest. Snippet,一定要以snippet結(jié)尾,否則以后沒有辦法使用此代碼段。參照上邊的講解,相信大家不難以葫蘆畫瓢來創(chuàng)建自己的代碼段。

  建立好了,我們該怎么使用呢?[工具]→[代碼段管理器] →[導(dǎo)入]即可。代碼段管理器可以方便的瀏覽現(xiàn)有的代碼段。我們也可以把自己做好的代碼段共享給別人,只要別人通過代碼段管理器就可以導(dǎo)入制訂好的代碼段。很方便。

  另外我們還可以創(chuàng)建VSI安裝文件來進行安裝使用。相信大部分人對VSI安裝文件都有所了解了,熟悉的初學者開發(fā)工具包就是利用VSI文件發(fā)布的。具體的方法請看我的后續(xù)文章。用好2005之創(chuàng)建安裝程序 (.vsi)

  通過以上介紹,相信大家會對代碼段有一個很清楚的了解。我們可以通過"代碼段管理器"方便的瀏覽已經(jīng)存在的代碼段以及它們的含義。

  代碼段是預(yù)編寫的代碼片段,您可以隨時使用 Visual Studio 2005 將這些代碼片段插入到您的應(yīng)用程序中。這些代碼段減少了鍵入重復(fù)代碼或搜索示例所用的時間,從而提高了工作效率。

  我們的口號是:只做對的,不做慢的。歡迎大家進行交流。

  回復(fù)  更多評論   

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1814985
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲欧洲日产国码二区| 亚洲欧美日韩系列| 国产亚洲第一区| 欧美日本一道本| 欧美日韩国产综合视频在线| 欧美日韩黄色大片| 国产精品毛片va一区二区三区 | 欧美日韩福利视频| av成人激情| 亚洲一区影音先锋| 久久精品视频网| 免费不卡中文字幕视频| 欧美日韩国产91| 国产欧美日韩在线视频| 亚洲国产成人精品女人久久久| 日韩视频免费观看| 欧美一区二区在线看| 麻豆精品视频在线| 日韩午夜一区| 久久久精品久久久久| 欧美激情精品久久久久久大尺度 | 亚洲欧美一区二区精品久久久| 久久久亚洲一区| 欧美日韩综合视频网址| 红桃视频一区| 亚洲一区欧美二区| 欧美成人一区二区三区| 亚洲影视中文字幕| 欧美**人妖| 国产在线播精品第三| 亚洲最新在线| 欧美成人亚洲成人日韩成人| 午夜精品免费在线| 欧美日韩一区在线观看视频| 亚洲成人在线视频播放| 欧美亚洲视频在线观看| 亚洲精品综合在线| 欧美不卡激情三级在线观看| 精品999成人| 欧美在线视屏| 亚洲专区欧美专区| 欧美日韩视频一区二区| 亚洲精品乱码久久久久久蜜桃91| 久久综合激情| 欧美专区日韩视频| 国产亚洲在线观看| 久久国产66| 亚洲欧美一区二区三区久久| 国产精品高潮呻吟久久| 亚洲精品一二三| 欧美国产日韩一区| 美乳少妇欧美精品| 在线精品在线| 欧美成人乱码一区二区三区| 久久久九九九九| 在线观看91精品国产麻豆| 麻豆91精品91久久久的内涵| 久久精品女人| **网站欧美大片在线观看| 久久天天躁夜夜躁狠狠躁2022| 欧美在线不卡视频| 尤物九九久久国产精品的分类| 免费成人你懂的| 久久久亚洲午夜电影| 久久综合九色| 在线欧美日韩国产| 亚洲第一区在线观看| 久久九九精品| 亚洲精品久久久久久久久久久久 | 欧美激情区在线播放| 99精品欧美一区二区三区 | 久久久亚洲高清| 久久久久久九九九九| 亚洲国产一区二区视频| 亚洲福利小视频| 欧美日韩一区在线播放| 欧美在线电影| 久热精品视频在线| 制服丝袜激情欧洲亚洲| 亚洲欧美日韩精品一区二区| 国产综合色在线视频区| 亚洲国产日韩欧美在线图片| 欧美系列精品| 久久视频在线视频| 欧美激情一区在线| 欧美一级专区免费大片| 久久综合色8888| 亚洲一区在线免费观看| 久久久精品国产99久久精品芒果| 日韩午夜高潮| 久久国产加勒比精品无码| 亚洲欧洲另类| 亚洲欧美日韩一区二区在线 | 两个人的视频www国产精品| 夜夜夜精品看看| 欧美一区二区三区四区在线观看地址| 亚洲国产黄色片| 亚洲午夜一级| 亚洲精品国产精品乱码不99按摩| 亚洲综合精品四区| 日韩视频在线播放| 久久九九国产精品怡红院| 亚洲一区在线播放| 欧美激情精品久久久久久蜜臀| 久久精品国产69国产精品亚洲| 欧美欧美天天天天操| 免费不卡视频| 国产私拍一区| 亚洲综合色自拍一区| 亚洲天堂免费观看| 欧美成ee人免费视频| 麻豆精品视频在线观看视频| 国产日韩一区在线| 中日韩男男gay无套| 亚洲精品一区中文| 美国成人直播| 美女视频网站黄色亚洲| 午夜视频一区二区| 国产精品久久久久久久久久妞妞| 99在线热播精品免费| 久久成人免费视频| 亚洲欧美日韩在线综合| 欧美全黄视频| 91久久久久久久久久久久久| 在线观看欧美日韩| 久久黄金**| 久久嫩草精品久久久久| 国产一区二区| 欧美一级视频精品观看| 久久久91精品| 国产亚洲精品久久久久婷婷瑜伽| 亚洲一级网站| 亚洲综合色自拍一区| 欧美婷婷久久| 亚洲愉拍自拍另类高清精品| 亚洲欧美日韩综合aⅴ视频| 国产精品乱码一区二三区小蝌蚪| 99精品热视频只有精品10| 亚洲性人人天天夜夜摸| 欧美视频一区二| 亚洲午夜精品久久久久久app| 西瓜成人精品人成网站| 国产日韩精品在线| 久久一日本道色综合久久| 欧美黄色片免费观看| 亚洲人成网站999久久久综合| 欧美另类videos死尸| 日韩亚洲欧美高清| 午夜精品理论片| 国内精品伊人久久久久av影院| 久久精品综合| 亚洲精品乱码久久久久久黑人 | 中文一区二区在线观看| 国产精品成人观看视频免费 | 欧美三级视频在线| 亚洲免费在线观看视频| 久久一区亚洲| 99精品视频免费全部在线| 国产精品久久久久91| 久久久国产精品一区| 亚洲电影成人| 欧美一区二区网站| 亚洲欧洲午夜| 国产伦精品一区二区三区视频黑人 | 精品999久久久| 欧美日韩国产成人在线91| 亚洲一区二区三区色| 免费日韩成人| 午夜精品成人在线| 亚洲国产精品一区二区第四页av| 欧美日韩亚洲综合一区| 久久久久久久久综合| 99精品久久久| 欧美电影在线观看| 欧美一级大片在线免费观看| 91久久夜色精品国产九色| 国产欧美精品日韩| 欧美日韩另类字幕中文| 久久婷婷激情| 午夜国产精品视频| 国产精品福利在线观看| 亚洲成色www8888| 欧美一区二区三区啪啪| 最新国产成人av网站网址麻豆| 欧美少妇一区| 欧美精品www| 另类成人小视频在线| 欧美亚洲视频| 宅男噜噜噜66一区二区| 亚洲黄色在线观看| 久久亚洲一区二区| 性欧美18~19sex高清播放| 亚洲精品久久久久久久久久久久久 | 久久九九热re6这里有精品| 亚洲图片在线| 亚洲最快最全在线视频| 亚洲毛片在线| 亚洲精品精选| 亚洲人在线视频| 亚洲日韩欧美视频|