<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Read Sean

    Read me, read Sean.
    posts - 508, comments - 655, trackbacks - 9, articles - 4

    新的項目要求使用C#,對于習(xí)慣了Java開發(fā)模式和環(huán)境的朋友來說,一開始總會有些不適應(yīng)。

    拿我自己的體驗來說,VS2005跟Eclipse SDK相比,當(dāng)然畫GUI和調(diào)試的直觀性方面給我留下的印象很深,不過也有些我認(rèn)為缺少了的東西:增量編譯(很多時候只有F6以后,編譯錯誤提示才會消失,有些引用和IntelliSense才生效,不像Eclipse,保存后自動增量編譯)、代碼排版(很懷念Ctrl-Shift-F)、引用整理(很懷念Ctrl-Shift-O)、很多有用的重構(gòu)(可以說VS里面代碼級的重構(gòu)相比很多Java IDE差遠(yuǎn)了)、單元測試的集成(NUnit理論上應(yīng)該可以很好的集成到VS2005,不過還是花了我一些功夫)、CVS客戶端(很懷念Eclipse SDK)。當(dāng)然,一些IDE當(dāng)中相對小的差異一開始也很難適應(yīng),不過這些也可以理解,屬于正常范疇。

    最近為了把項目的一些基調(diào)和開發(fā)模式定下來,做了一些嘗試,我想也許對大家還有些用,整理一下放在這里。

    一個好的.NET項目,我相信有些東西事先定義好,對項目整個過程是有很大好處的,這些東西至少應(yīng)該包括:開發(fā)工具選擇和配置、代碼模板、單元測試、代碼自動化review工具、自動編譯和測試、缺陷跟蹤、文檔管理等。當(dāng)然如果不計成本,那么有很多重量級的SDLC框架可以用,如VSTS(MSF)、Rational(RUP)和Borland的集成工具,以上這些環(huán)節(jié)的問題相應(yīng)的框架也大都給出了很好的解決方案,但是畢竟不是所有的項目都會購買和采用那么"重"的方法和過程,很多時候就算有那個預(yù)算,對于特定的項目,實施起來也不見得就會收到好的效果。于是我們接觸到的很多項目,其實都還是需要自己去尋找適合的工具來把整個周期串起來。以下是我在嘗試找到一套合適方案時遇到的一些特定問題以及解決辦法:

    首先是單元測試工具以及和IDE的集成。在Eclipse SDK中,我們不必太過關(guān)心這個問題,因為Eclipse已經(jīng)很好的集成了JUnit。但是在.NET的世界,人們是怎么做的呢?答案是NUnit,一個跟JUnit非常類似的東西。和JUnit一樣,NUnit也提供了命令行版本和GUI版本,但是VS里面并沒有直接提供集成,你更多的時候需要從外部運行NUnit,當(dāng)然這樣很不爽啦。VS號稱是自己也提供了單元測試工具,但是那僅僅在高端VSTS中才有。如何解決這個集成的問題呢?可以到http://www.testdriven.net/ 上下載一個TestDriven.NET的VS add-in。安裝以后,就可以在VS中調(diào)用我們可能經(jīng)常需要調(diào)用的NUnit來跑自己的單元測試了。

    其次是代碼模板。一個項目,不管大小,總會涉及到相當(dāng)數(shù)量的源代碼文件,我們希望這些源代碼都包括一些共有的東西和特定的注釋,怎么辦?在Eclipse里面有code template的概念,那么在VS里呢?答案是Project Template和Item Template。一開始我根本摸不著頭腦,只看到MSDN上正在說Code Snippet,于是我實現(xiàn)的1.0版代碼模板就是基于Code Snippet的,用起來很不方便,有關(guān)Code Snippet,我等下還會提到,這里先看Templates。我Google了一下相關(guān)的Project Template和Item Template的說明,基本都是VS 2003的,不過它們給了我很好的提示,至少可以知道VS在生成默認(rèn)的代碼時是怎樣一個思路。所有的VS 2005代碼模板都可以在%VS_2005_INSTALL_PATH%\Common7\IDE\ProjectTemplates和%VS_2005_INSTALL_PATH%\Common7\IDE\ItemTemplates目錄下面找到,Project Template和Item Template不同的是Project Templates是在你新建一個項目時使用的模板,而Item Templates是在你往一個現(xiàn)有項目中添加item,如Form、Class等的時候使用。這里需要注意兩點:一是VS 2005跟VS 2003不同,templates不再是直接的.cs文件等,而是打包在了.zip中,需要修改的話,需要把新的文件重新壓到.zip中;二是除了template目錄,還有一個TemplateCache目錄,為了立即看到模板的效果,這里面的相應(yīng).cs文件等也需要修改。模板改起來相當(dāng)直接,一看便知,比如新建Form的模板:

    using?System;
    using?System.Collections.Generic;
    using?System.ComponentModel;
    using?System.Data;
    using?System.Drawing;
    using?System.Text;
    using?System.Windows.Forms;

    namespace?$rootnamespace$
    {
    ????
    public?partial?class?$safeitemrootname$:?Form
    ????
    {
    ????????
    public?$safeitemrootname$()
    ????????
    {
    ????????????InitializeComponent();
    ????????}

    ????}

    }


    接下來說說Code Snippet,這個東東被MSDN吹得有點大,不過用起來實在有些不順手,你雖然可以定義一大塊代碼片斷,然后填一些參數(shù),就能得到一個定制的代碼段,但是畢竟你還是需要自己寫很多東西,然后使用的話需要在代碼編輯器里面點很多下才出來,又沒有很好的快捷方式。不客氣地說我覺得用Code Snippet來模擬Eclipse的很多現(xiàn)成的重構(gòu)功能實在不能夠體現(xiàn)出優(yōu)勢。退一萬步講,有總比沒有強,至少你還是可以做一些東西的。使用現(xiàn)成的Code Snippet很簡單,只要把VS指向你存放Code Snippets的目錄即可,新的Code Snippets會被自動掃描到。方法是:Tools -> Code Snippets Manager或者Ctrl-K Ctrl-B然后添加目錄名。所有的Code Snippets文件都以.snippet后綴結(jié)尾,其實內(nèi)部是個XML,像這個樣子:

    <?xml?version="1.0"?encoding="utf-8"??>
    <CodeSnippets?xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    ??
    <CodeSnippet?Format="1.0.0">
    ????
    <Header>
    ??????
    <Title>Insert?a?simple?set?of?getter?and?setter?pair</Title>
    ??????
    <Author>Sean?GAO</Author>
    ??????
    <Description></Description>
    ??????
    <Shortcut>simplisticGetterSetter</Shortcut>
    ??????
    <SnippetTypes>
    ????????
    <SnippetType>Expansion</SnippetType>
    ??????
    </SnippetTypes>
    ????
    </Header>
    ????
    <Snippet>
    ??????
    <Declarations>
    ????????
    <Literal>
    ??????????
    <ID>AccessLevel</ID>
    ??????????
    <ToolTip></ToolTip>
    ??????????
    <Default>public</Default>
    ????????
    </Literal>
    ????????
    <Literal>
    ??????????
    <ID>PropertyType</ID>
    ??????????
    <ToolTip></ToolTip>
    ??????????
    <Default>string</Default>
    ????????
    </Literal>
    ????????
    <Literal>
    ??????????
    <ID>PropertyName</ID>
    ??????????
    <ToolTip></ToolTip>
    ??????????
    <Default>name</Default>
    ????????
    </Literal>
    ????????
    <Literal>
    ??????????
    <ID>LocalVarName</ID>
    ??????????
    <ToolTip></ToolTip>
    ??????????
    <Default>localVar</Default>
    ????????
    </Literal>
    ??????
    </Declarations>
    ??????
    <Code?Language="csharp">
    <![CDATA[????????$AccessLevel$?$PropertyType$?$PropertyName$
    ????????{
    ????????????get?{?return?$LocalVarName$;?}
    ????????????set?{?$LocalVarName$?=?value;?}
    ????????}
    ]]>
    ??????
    </Code>
    ????
    </Snippet>
    ??
    </CodeSnippet>
    </CodeSnippets>

    我們可以看到,首先在.snippet中我定義了一些變量,然后在<Code/>段加入了<![CDATA[...]]>,就這么簡單。

    最后,還剩一些具體的工具,選擇面比較廣,我只列舉一下我都選了哪些:
    - 代碼review和分析工具:FxCop,可以在GotDotNet網(wǎng)站上下載:http://www.gotdotnet.com/team/fxcop/?。
    - 自動編譯管理:NANT和CruiseControl.NET:http://nant.sourceforge.net/?和 http://ccnet.thoughtworks.com/?。
    - 缺陷跟蹤:mantis:http://www.mantisbt.org/?。
    - 文檔管理: jLibrary:http://jlibrary.sourceforge.net/?。
    - 版本控制:CVSNT和Eclipse SDK:http://www.cvsnt.org/?和 http://eclipse.org/

    暫時就是這么多,如果你和我一樣從Java轉(zhuǎn)向.NET,然后正在犯愁如何做一個.NET項目的前期準(zhǔn)備,希望能給你一些參考。

    Feedback

    # re: [VS2005起步]一些實用的工具和配置指南  回復(fù)  更多評論   

    2006-04-01 17:33 by 大胃
    補充一點:
    http://blogs.msdn.com/csharpfaq/archive/2004/10/20/245411.aspx

    多余的/未被使用的using語句在C#源碼編譯的時候會被忽略,所以在C#中其實不用太在意冗余的using會到來性能影響,但是有好的習(xí)慣總是不錯的。
    主站蜘蛛池模板: 午夜视频免费成人| 67194在线午夜亚洲| 免费黄色电影在线观看| 久久久久亚洲AV成人网人人网站| 无码乱肉视频免费大全合集| 亚洲伊人tv综合网色| 一区二区三区观看免费中文视频在线播放 | 国产精品免费网站| 337p欧洲亚洲大胆艺术| 久操视频在线免费观看| 亚洲第一福利网站| 久久久免费精品re6| 亚洲精品偷拍无码不卡av| 114一级毛片免费| 亚洲久悠悠色悠在线播放| 好吊妞在线成人免费| 亚洲国产精品18久久久久久| 日本免费一区尤物| 色吊丝免费观看网站| 亚洲视频一区二区| 在线看片免费人成视频久网下载| 日本特黄a级高清免费大片| 爱爱帝国亚洲一区二区三区| 国产片免费在线观看| 成年网在线观看免费观看网址| 噼里啪啦电影在线观看免费高清| 西西人体44rt高清亚洲| 18成禁人视频免费网站| 人成午夜免费大片在线观看| 在线观看免费人成视频| 日韩亚洲欧洲在线com91tv| 一区二区三区观看免费中文视频在线播放 | 亚洲午夜激情视频| 国产va免费精品| 国产av天堂亚洲国产av天堂| 91精品国产免费| 中文字幕无码精品亚洲资源网久久| 国产成人yy免费视频| 国产成人精品亚洲日本在线| 成人爱做日本视频免费| 国产成人无码精品久久久免费 |