• <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>

            C++ Programmer's Cookbook

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

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

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

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

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

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


            圖1

            圖2

            圖3

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

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

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

              如果使用的是vb.net,則也有兩種方法實(shí)現(xiàn)。可以在要插入的位置選insert snippets,再選擇"common code patterns",在彈出的菜單中繼續(xù)選擇" Properties and Procedures",最后選擇"Define a Property",則會(huì)自動(dòng)生成添加屬性的普通代碼;如果要簡單快捷的話,則可以輸入property,并按TAB鍵,則同樣可以實(shí)現(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都有一個(gè)額外的功能叫"Surround with",就是說可以將已經(jīng)存在的一段代碼放到snippets助手中去,比如有下面的代碼:

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

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

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

              接下來我們談下如何管理這些代碼snippets。在vs.net 2005中,使用code snippets manager管理器來管理這些snippets,code snippets manager在tools工具菜單下可以找到,如下圖:

              對(duì)于vb.net,visual c#,Visual j#,xml,snippets管理器都分類列出了有哪些代碼助手,點(diǎn)選每一個(gè)代碼片斷,同時(shí)列出了其存放的位置。還提供了增加,刪除,導(dǎo)入,在線查詢代碼助手的功能。
            最后,我們看下如何自定義snippets。首先研究下snippets的結(jié)構(gòu),以上文提到的屬性snippets為例子,我們先在snippets 管理器中,找到prop這個(gè)snippets,然后記下其所在的路徑,然后再用編輯工具打開這個(gè)文件,可以看到如下的代碼,注意是以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)于這個(gè)snippets的信息,如名稱,快捷方式,作者,備注等。在<snippets>節(jié)點(diǎn)下,則逐個(gè)定義了在snippets中出現(xiàn)的屬性,其中<default>指出了該屬性默認(rèn)的值。而在關(guān)鍵部分<code>,用<![CDATA]>的方式定義了snippets的基礎(chǔ)架構(gòu),其中用$參數(shù)名的方式定義每個(gè)屬性,十分簡單。

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

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

              假如要?jiǎng)?chuàng)建自己的snippets時(shí),可以首先在左則已有的目錄下增加一個(gè)snippets,比如現(xiàn)在要?jiǎng)?chuàng)建一個(gè)叫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

              寫完后,可以點(diǎn)選priview選項(xiàng)卡,來進(jìn)行效果的預(yù)覽。而在下方的replacement選項(xiàng)卡中,是用來進(jìn)行參數(shù)默認(rèn)的設(shè)置的,當(dāng)設(shè)置默認(rèn)值后,只要用戶一調(diào)用該codesnippet,則對(duì)應(yīng)的參數(shù)轉(zhuǎn)換為該默認(rèn)值,比如要將PrivateVariable的默認(rèn)值設(shè)置為abc, PropertyType的值可以默認(rèn)設(shè)置為User自定義類型,PropertyName設(shè)置為setUser,則將上述snipeet保存后,下次調(diào)用snippet時(shí),會(huì)轉(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 夢在天涯 閱讀(1465) 評(píng)論(1)  編輯 收藏 引用 所屬分類: C#/.NET

            評(píng)論

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

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

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

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

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

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

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

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

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

              打開VS2005的 \VC#\Snippets\2052\Visual C# 目錄,我們會(huì)發(fā)現(xiàn)有一些以.snippet結(jié)尾的文件,這些就是系統(tǒng)給我們默認(rèn)定義好的代碼段。我們用文本文檔打開,不難發(fā)現(xiàn)其實(shí)就是標(biāo)準(zhǔn)的XML文件。現(xiàn)對(duì)照if代碼段進(jìn)行一些講解(對(duì)應(yīng)文件為if.snippet)。看起代碼:

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

              看,通過上邊的分析,代碼段是不是很簡單。我們?cè)趯?duì)照一下核心部分代碼:

              代碼段部分代碼:

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

              正常語句代碼:

            if (條件) { 代碼 }

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

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

              建立好了,我們?cè)撛趺词褂媚兀縖工具]→[代碼段管理器] →[導(dǎo)入]即可。代碼段管理器可以方便的瀏覽現(xiàn)有的代碼段。我們也可以把自己做好的代碼段共享給別人,只要?jiǎng)e人通過代碼段管理器就可以導(dǎo)入制訂好的代碼段。很方便。

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

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

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

              我們的口號(hào)是:只做對(duì)的,不做慢的。歡迎大家進(jìn)行交流。

              回復(fù)  更多評(píng)論   

            公告

            EMail:itech001#126.com

            導(dǎo)航

            統(tǒng)計(jì)

            • 隨筆 - 461
            • 文章 - 4
            • 評(píng)論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1804303
            • 排名 - 5

            最新評(píng)論

            閱讀排行榜

            精品人妻伦九区久久AAA片69| 久久精品国产99国产精品| 天天躁日日躁狠狠久久| 久久精品www人人爽人人| 国内精品久久久久久中文字幕| 久久夜色精品国产亚洲| 久久久久综合网久久| 久久久精品国产免大香伊 | 狠狠色丁香婷婷久久综合五月 | 亚洲综合熟女久久久30p| 伊人久久综合热线大杳蕉下载| 少妇人妻综合久久中文字幕| 93精91精品国产综合久久香蕉| 一本色道久久88—综合亚洲精品| 日本三级久久网| 91精品国产91久久久久福利| 久久亚洲AV无码精品色午夜麻豆| 久久综合狠狠综合久久激情 | 久久久久久久久无码精品亚洲日韩 | 亚洲精品久久久www| 国产高潮久久免费观看| 伊人久久精品无码av一区| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产成人久久精品二区三区| 久久精品中文字幕无码绿巨人| 天天综合久久一二三区| 国产欧美久久一区二区| 伊人久久综合精品无码AV专区| 亚洲综合久久久| 亚洲婷婷国产精品电影人久久| 久久精品国产欧美日韩| 99久久精品国产毛片| 久久免费视频观看| 久久精品一区二区| 久久久久AV综合网成人 | 久久激情五月丁香伊人| 久久精品人人做人人爽电影| 国产成年无码久久久久毛片| 91视频国产91久久久| 久久99精品国产| 国产精品美女久久久网AV|