亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

.NET2005提供的Code Snippets看代碼復用

2019-11-18 12:01:58
字體:
來源:轉載
供稿:網友

  首先說明這里的代碼復用指的是狹義的源代碼的復用,而不是廣義的黑盒復用和白合復用所指的代碼復用,所以文中所說的代碼復用都默認都是指前者所指的源代碼的復用。
  
  我們知道在程序設計中復用代碼并不是一件輕易的事情,其實每段代碼的編寫,都是通過一定的思考的,當然考慮的程度與其解決的問題的難度有關。我們很忌諱在一個工程中重復使用相同的源代碼,假如出現這樣的情況很多時候就是程序結構設計本身的不合理了。可是對于一個developer或一個PRodUCt team,源代碼的邏輯(主要是執行邏輯,而不是業務邏輯)在不同項目或同一項目不同版本中很可能需要復用,而這種復用很多時候又是很難抽象成廣義的代碼復用的。于是我們不得不ctrl+c & ctrl+v,這是一個好辦法,也確實能為我們節省很多的時間,可是這樣同時也會帶來很多的問題。假如被復用的代碼是近期所寫的,我們一般對其很熟悉,ctrl+v時心理也很有底??墒菍τ诰帉懥撕芫玫拇a,我們在ctrl+v就不得不考慮一下代碼是不時完全合適被復用了。更多的時候我們還需要對復用代碼做一些小的修改,最簡單的修改莫過于把變量名改來適合當前代碼的上下文。
  
  假如有這樣復用過代碼的人可能會有一種感覺,我總是不知道哪個源碼文件里的代碼snippet是我覺得解決這個邏輯最好的@_@,因為每次ctrl+v后或多或少又會把代碼做一些小的改動,或是修補不足或是增加功能。非凡是修補了不足后假如能保留下來以做再次復用就好了,可是很多時候這些越來越優秀的代碼snippet卻仍然分布在某個項目的某個文件中。于是我們發現有些小工具可以用來幫助我們保存代碼snippet,比如前些天有人開發的類似CodeLib什么的。
  
  今天在用VS.NET 2005的時候,發現tools菜單里有一個Code Snippets Manager(或者用Ctrl+k,Ctrl+b呼出)。打開看了一下,第一感覺就是一個代碼模版治理嘛,看看了些預置的snippet,居然都是些很簡單的類似if語句結構、for語句結構、do語句結構、while語句結構等,覺得真是沒有意思,難道微軟要我們用鼠標來編程嗎?繼續往后翻,發現了幾個比較復雜的snippets,有的有一屏那么多的代碼。其實代碼多少不是snippet的重要的問題了,而是這些snippet在插入IDE后,可以根據其在文件里的命令定義,產生如下圖所示的自動添補提示功能:
  
.NET2005提供的Code Snippets看代碼復用

  在圖中黃底黑字區域內編輯完后按Tab,其下面的虛線框里的內容會同步的更新。這樣的功能為我們收集并復用源代碼提供了很便利的支持,這個snippet是以xml格式保存的,只是whidbey beta1里面還沒沒有提供snippet文件的可視化編輯器,不過xml本身在VS.NET里也不難寫。上圖示例的代碼文件如下:
  
  <CodeSnippet Format="1.0.0">
  <Header>
    <Title>"named" iterator / indexer pair</Title>
    <Shortcut>iterindex</Shortcut>
    <Description>Implement a "named" iterator / indexer pair, using a nested class</Description>
    <SnippetTypes>
      <SnippetType>EXPansion</SnippetType>
    </SnippetTypes>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>type</ID>
        <Default>ElementType</Default>
        <ToolTip>Type to return from iterator / indexer</ToolTip>
      </Literal>
      <Literal>
        <ID>name</ID>
        <Default>MyView</Default>
        <ToolTip>Name of the iterator/indexer pair</ToolTip>
      </Literal>
      <Literal Editable="false">
        <ID>outer</ID>
        <Default>MyOuterClass</Default>
        <Function>ClassName()</Function>
      </Literal>
      <Literal Editable="false">
        <ID>SystemCollectionsGenericIEnumeratorG</ID>
        <!-- Function>ShortName(System.IEnumerator)</Function -->
        <Default>System.Collections.Generic.IEnumerator</Default>
      </Literal>
      <Literal Editable="false">
        <ID>SystemNotImplementedException</ID>
        <!-- Function>ShortName(System.NotImplementedException)</Function -->
        <Default>System.NotImplementedException</Default>
      </Literal>
    </Declarations>
    <Code Language="csharp" Format="CData"><![CDATA[public $name$Impl $name$
    {
      get
      {
        return new $name$Impl(this);
      }
    }
  
    public class $name$Impl
    {
      readonly $outer$ _outer;
  
      internal $name$Impl($outer$ mc)
      {
        this._outer = mc;
      }
  
      // A Length property isn't required, but it's often useful.
      public int Length { get { return 1; } }
  
      public $type$ this[int index]
      {
        get
        {
          //
          // TODO: implement indexer here
          //
          // you have full access to $outer$ privates.
          //
          $end$throw new System.NotImplementedException();
          return default($type$);
        }
      }
  
      public $SystemCollectionsGenericIEnumeratorG$<$type$> GetEnumerator()
      {
        // TODO: provide an appropriate implementation here
        for (int i = 0; i < this.Length; i++)
        {
          yield return this[i];
        }
      }
    }]]>
  </Code>
  </Snippet>
  </CodeSnippet>
  有了這個snippet的治理支持和方便的使用方法后,基本就解決了我前面提到源代碼復用里面版本控制和變量名修改的問題。
  
  其實這個snippet的使用還有一個積極的意義,我們知道編寫相同的邏輯過程是枯燥的,我們都喜歡編寫新的邏輯過程,即使新的邏輯更難更復雜,反而更有挑戰。但是我們又不能避開很多程序邏輯的復用,在我們以一種類似"厭惡"的情緒重復著那些程序邏輯時,保證代碼的正確性真是一場噩夢。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久人成影片一区二区三区观看| 亚洲欧洲在线视频| 亚洲精品91美女久久久久久久| 亚洲japanese制服美女| 日韩久久免费电影| 国产成人aa精品一区在线播放| 日韩电影在线观看中文字幕| 欧美亚州一区二区三区| 亚洲大胆人体av| 欧美午夜精品久久久久久浪潮| 久久久综合av| 久久久国产精彩视频美女艺术照福利| 国产一区二区黄| 久久777国产线看观看精品| 亚洲国产成人精品一区二区| 黑人巨大精品欧美一区免费视频| 国产精品久久久久久久久久久不卡| 国产精品免费一区二区三区都可以| 欧美日韩国产成人高清视频| 亚洲美女中文字幕| 久久久免费在线观看| 久久国产精品久久国产精品| 亚洲激情在线观看视频免费| 国产精品久久久久久久久久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 欧美在线观看视频| 成人激情视频在线观看| 国产精品亚洲аv天堂网| 久久成人免费视频| 亚洲伊人久久大香线蕉av| 国产69精品久久久久9| 欧美理论电影网| 久久国产视频网站| 亚洲人成绝费网站色www| 国产欧美亚洲精品| 久久视频在线看| 欧美日韩国产综合新一区| 欧美亚洲视频在线观看| 一本色道久久综合狠狠躁篇的优点| 国产精品黄色影片导航在线观看| 亚洲欧洲高清在线| 日本aⅴ大伊香蕉精品视频| 久久精品国产2020观看福利| 亚洲18私人小影院| 国产精品视频午夜| 国产成人av在线播放| 国产精品777| 亚洲va欧美va国产综合剧情| 国产精品美女久久久久久免费| 欧美美女18p| 国产精品国产福利国产秒拍| 久久久久亚洲精品成人网小说| 在线观看视频99| 成人国产精品日本在线| 国产91热爆ts人妖在线| 中文字幕亚洲无线码在线一区| 久久影院模特热| 日韩中文综合网| 日韩精品一区二区视频| 久久久精品在线观看| 日韩欧美国产一区二区| 亚洲精品按摩视频| 91精品视频免费观看| 久久激情视频久久| 国产精品男人爽免费视频1| 欧美性色xo影院| 久久精品久久久久电影| 91精品国产九九九久久久亚洲| 亚洲国产免费av| 少妇高潮 亚洲精品| 9.1国产丝袜在线观看| 欧美精品18videos性欧| 欧美激情小视频| 狠狠色狠狠色综合日日小说| 国产精品揄拍500视频| 最近的2019中文字幕免费一页| 日本成人黄色片| 国模视频一区二区| 91成人国产在线观看| 国产小视频国产精品| 国产精品视频专区| 欧美激情在线观看视频| 国产精品视频999| 中文字幕日韩欧美在线视频| 国产精品91视频| 91av在线影院| 亚洲欧美资源在线| 日韩av网站电影| 久久久久久久av| 国产一区二区三区在线观看网站| 国产一区二区三区久久精品| 精品久久久久久久久中文字幕| www.久久草.com| 欧美一级大片视频| 国产人妖伪娘一区91| 欧美精品在线观看| 在线观看日韩专区| 亚洲人成在线一二| 午夜伦理精品一区| 国产精品成人一区二区三区吃奶| 成人xxxx视频| 亚洲一区国产精品| 日韩在线观看免费网站| 欧美日韩福利电影| 国产精品美女久久久免费| 成人黄色免费网站在线观看| 国产日韩综合一区二区性色av| 国产精品99一区| 欧洲成人在线观看| 欧美孕妇与黑人孕交| 一本久久综合亚洲鲁鲁| 国产视频精品va久久久久久| 久久精彩免费视频| 欧美日韩人人澡狠狠躁视频| 欧美国产在线视频| 精品女同一区二区三区在线播放| 成人精品久久一区二区三区| 亚洲欧美日韩天堂一区二区| 久久影视三级福利片| 日韩美女视频免费在线观看| 欧美理论电影网| 国产精品成人av性教育| 日韩免费观看高清| 亚洲最大av在线| 久久亚洲精品国产亚洲老地址| 亚洲女在线观看| 国产91精品久久久久久| 欧美日韩午夜剧场| 日韩黄色高清视频| 在线看日韩欧美| 亚洲国产97在线精品一区| 国产精品毛片a∨一区二区三区|国| 亚洲人成在线播放| 欧美激情高清视频| 96精品久久久久中文字幕| 亚洲国产精品成人一区二区| 国产福利精品在线| 亚洲欧美国产精品| 97精品国产91久久久久久| 日韩高清av在线| 国产精品一区二区三区在线播放| 色噜噜久久综合伊人一本| 欧美激情啊啊啊| 国产亚洲一区精品| 播播国产欧美激情| www.日韩视频| 国产亚洲a∨片在线观看| 亚洲女成人图区| 91沈先生在线观看| 91精品视频专区| 欧美在线视频观看| 国产日韩av高清| 欧美视频中文字幕在线| 日韩欧美国产视频| 亚洲性生活视频在线观看| 91精品久久久久| 精品久久久久久国产| www.亚洲一区| 国产主播精品在线| 日韩电影中文字幕av| 亚洲国产精品高清久久久| 日韩欧美在线免费| 亚洲成人激情视频| 欧美日韩国产丝袜另类|