• <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++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

            VS2005中用Code Snippets提高開發效率

             在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

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

            評論

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

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

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

              發現這個還是一次偶然的機會,我自定義了一個Prop函數,結果在按下去的時候不小心碰到了Tab鍵結果出現了以下的代碼:

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

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

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

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

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

              打開VS2005的 \VC#\Snippets\2052\Visual C# 目錄,我們會發現有一些以.snippet結尾的文件,這些就是系統給我們默認定義好的代碼段。我們用文本文檔打開,不難發現其實就是標準的XML文件?,F對照if代碼段進行一些講解(對應文件為if.snippet)。看起代碼:

            <?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自動產生代碼
            <Description>if 語句的代碼段</Description>
            //指定代碼段內容的說明信息,它可以給我們在使用代碼段的時候提供工具提示,并且可以在代碼段管理器中提供說明
            <Author>Microsoft Corporation</Author>
            //版權信息
            <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
            </SnippetTypes>
            //以上部分指定vs如何插入代碼段。SurroundsWith允許代碼段放置在選定代碼快的周圍,而Expansion的值允許將代碼段插入光標所在的位置。
            </Header>
            <Snippet>
            //此處開始指定代碼的引用、導入、聲明代碼。主體部分
            <Declarations>
            //指定當前作為代碼段組成部分的文本和對象,對代碼段可以編輯部分。
            <Literal>//<Literal> 段定義可編輯的代碼段的文本。他用與標識對代碼快的替換。我們可以使用Tab來進行切換修改??梢园凑蘸瘮档母拍顏砝斫狻_@里就是我們傳遞參數值
            <ID>expression</ID>
            //替代標識
            <ToolTip>要計算的表達式</ToolTip>//提示文本
            <Default>true</Default>//默認值
            </Literal>//若需多個,則可重復<Literal>代碼段。
            </Declarations>
            <Code Language="csharp">
            <![CDATA[if ($expression$) { $selected$ $end$ }]]>
            </Code>//看code部分代碼段。這里就是我們的核心部分。其中Language可以指定我們在用什么語言開發的時候使用此類代碼段。
            <! [CDATA[部分就是我們標準的C#語法了。if ($expression$)看清楚if()括號部分的代碼,這里就是使用到我們在<Literal>部分定義的替代標識了。以$開始和結束,由于我們在定義的時候制定了默認值為true,所以在使用代碼段的時候等價于if(true)。而括弧部分就是主體$selected$表示此處可以被選擇,$ end$表示代碼段結束。
            </Snippet>
            </CodeSnippet>
            </CodeSnippets>

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

              代碼段部分代碼:

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

              正常語句代碼:

            if (條件) { 代碼 }

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

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

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

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

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

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

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

              回復  更多評論   

            公告

            EMail:itech001#126.com

            導航

            統計

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

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1804430
            • 排名 - 5

            最新評論

            閱讀排行榜

            国产精品免费久久| 26uuu久久五月天| 久久精品国产精品亚洲精品| 热99RE久久精品这里都是精品免费 | 蜜桃麻豆WWW久久囤产精品| 综合网日日天干夜夜久久| 精品九九久久国内精品| 精品人妻伦一二三区久久| 国产精品久久久久久久人人看| 伊人久久久AV老熟妇色| 精品99久久aaa一级毛片| 色婷婷综合久久久中文字幕| 99久久www免费人成精品| 久久人人爽人人人人爽AV| 久久九色综合九色99伊人| 久久A级毛片免费观看| 天堂无码久久综合东京热| 久久精品九九亚洲精品天堂| 久久天天婷婷五月俺也去| 国产精品嫩草影院久久| 久久久久久久久久久久中文字幕 | 久久久久97国产精华液好用吗| 久久无码AV中文出轨人妻| 四虎国产精品免费久久5151| 天天爽天天狠久久久综合麻豆| 久久伊人色| 久久天天躁狠狠躁夜夜不卡 | 久久久国产乱子伦精品作者| 久久99这里只有精品国产| 久久夜色撩人精品国产| 久久亚洲AV永久无码精品| 精品人妻伦九区久久AAA片69| 久久99国产精品久久| 99国产精品久久| 国产欧美一区二区久久| 国产精品久久久久9999高清| 国产精品久久久久久福利69堂| 色婷婷综合久久久久中文一区二区| AV无码久久久久不卡蜜桃| 亚洲AV无码一区东京热久久| 亚洲人成网亚洲欧洲无码久久|