.NET程序開發中必須收藏的七個類型的經典工具


工作之余經常會收藏一些.NET開發中應用到的軟件,這些工具涵蓋設計,調試,構建,測試等領域。有這些工具的幫助,在處理一些開發中遇到的問題時,會輕松很多。

1 Reflection 反射 .NET Reflector

image

這個反編譯工具確實相當的重要。且不說用來干壞事,就是經常用來檢查自己設計的程序集的命名,也是很有益處的。命名空間是否合理,類型命名是否合理。

以我的經驗,反編譯自己寫的程序集,常常會出現一些自己沒有預料到的命名空間。比如我們在Visual Studio中新增一個類型或是窗體時,它會根據當前項所處的路徑來添加完整的命名空間,所以,編譯完成后,我還是會用這個工具,檢查一下程序集的命名空間的定義。另外一條經驗是,不要使用相當的類型名稱,即使它們放在不同的命名空間中,也不要讓類型命名與系統的命名相同,雖然系統的命名更能表達類型的含義,也不應該這樣做。

曾經有一個項目,把重寫的控件命名為Button,Lable,TextBox,結果為了屏蔽System.Windows.Forms中的同樣名稱的控件,耗費了很多精力。如果我的ERP叫Flex ERP,我可以把重寫的Button命名為FlexButton,這樣會給以后的編譯帶來很多方便。

 

2 Test 測試 NUnit  或 Visual Studio Test

依據代碼的性質,單元測試在代碼開發中的作用略有不同。框架開發人員,需要測試框架方法的可用性,靈活性,經常需要寫出一些測試代碼,並將這些代碼交給應用程序員,讓他們熟悉框架的用法。對於應用程序員,我偏重於把Test項目作為一個代碼的收藏工具,在網上遇到的好代碼,我會將它保存到單元測試項目中,以備下次使用。

image

對於這二個工具,我偏重於后者。Visual Studio Test可以用來調試代碼。有時候並不一定想看到最后的測試結果是綠色紅色,我需要的是,對方法流程的把握。雖然調試測試方法有點不切實際,但是我常常這樣做。比如Linq to Xml中,經常弄錯了節點與節電之間的相互引用,於是開發一個Test項目,再放調試器打開,邊寫邊調。調試器也可以用來協助寫代碼。

 

3 Improvement 代碼分析 NDepend

基於源代碼級別的代碼分析,統計,可用來改善代碼質量。比如我要查找程序中,以Do開頭方法,並且有15個參數的,它顯示結果如下所示

image

此外,它還可以檢測到無用的代碼(常常是方法中return語句之后),字段需要封裝。如果一個方法過長,它也可以檢查出來,提醒你改善此代碼。如果是程序集編譯之后的代碼檢驗,可以使用FoxCop,它以程序集為檢測單元。而NDepend以構建程序集的源代碼為檢測單元,我以為后者更有借鑒意義。

image

 

4 Environment simulate 環境模擬Virtual PC/VMWare Workstation/Virtual BOX

CPU硬件技術向多核發展,帶來更快的處理速度。有時要模擬客戶電腦中遇到的問題,可借助於虛擬技術。Windows Server 2008之后的版本,直接內置了虛擬機技術。Windows 7則要安裝虛擬機,比如Virual PC或是VMWare Workstation,或是Virtual Box。

image

Mircrosoft Virtual PC發展到2007后不再更新,所以我更偏向於VMWare的虛擬機,強大靈活。

 

5 Text Handle 文本處理 RegexBuddy  Expresso  RegexTester

當涉及到文本相關的內容時,應當選取一個稱手的正則表達式工具,借助於正則表達式,靈活又強大。

image

簡單的可以用字符串解析,IndexOf配合Substring解決問題,復雜一些則需要用正則表達式,處理相對於靈活一些。

比如下面的代碼,為了讀取配置項中的主機地址和端口,格式像這樣 127.0.0.1/2908

Match reportServerUriMatch = Regex.Match("127.0.0.1/2908", "(?<host>[^/\r\n]+):(?<port>[0-9]*)", RegexOptions.IgnoreCase | RegexOptions.Singleline);
 if (reportServerUriMatch.Success)
 {
        string serviceHost = reportServerUriMatch.Groups["host"].Value;
        int servicePort = Convert.ToInt32(reportServerUriMatch.Groups["port"].Value);
 }
 
 

6 Language 語言類  LinqPad /Snippet Compiler

Linq to SQL雖然逐漸被大眾遺忘也不再更新。但是Linq to Object,Linq to Xml還是相當有用的技術。Linq to Object能大大的減少foreach式的代碼。

image

在C# 2.0時代,為了把讀取數組中長度大於等於4的字符串,需要做一次循環,而在Linq中,只需要一行代碼即可做到。

string[] names = { "Tom", "Dick", "Harry" };

IEnumerable<string> filteredNames =
    System.Linq.Enumerable.Where (names, n => n.Length >= 4);
                                    
foreach (string n in filteredNames)
    Console.Write (n + "|");            // Dick|Harry|
 
 

LinqPad是Linq類型工具中最優秀的一個,用於快速構建Linq語法表達式。

本系列中的另一個工具Snippet Compile可用來幫助編寫.NET代碼片段,可以直接運行代碼片段,並且可以調試。

 

7  Refactor 重構  ReSharper

JetBrain出品的ReSharper是此類工具中最優秀的一員,幾乎找不到比它更優秀的同類性質的工具。

image

在代碼編寫過程中,ReSharper能幫助你發現大量的問題,並提示你修改。這個工具完全替代Visual Studio本身的重構工具。Visual Studio的功能雖然強大,但是有的地方,也還不足夠好,Resharper的目的很明確。就是加忚你編寫代碼癿速度,規范你的代碼。面向開發人員,Resharper 提供以下6個核心功能,分別是:
1. 代碼分析(Code Analysis):智能提示代碼中存在的問題和修復建議。
2. 編碼助手(Coding Assistance):智能提示自動完成功能。
3. 代碼生成(Code Generation):自動生成屬性,構造函數,實現接口,覆蓋基類成員,代理成員等
4. 代碼清理(Code Cleanup): 重新組織代碼,並且能夠消除代碼冗余,以及成員間的排序
5. 導航查找(Navigation and Search)
6. 重構(Refactorings)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM