開發者需知的10類工具

csdn發表於2013-05-11

  作為一個軟體開發者,你不可避免地需要用到各種工具來設計、理解、編輯任何程式,本文作者按型別總結了10類開發者須知的工具。CSDN摘譯如下:

  免責宣告:“最好”的軟體工具通常屬於主觀看法,也許你並不同意我的觀點,但是也可以從中獲取所需。

  1. 版本控制工具

  無論你是在100人的團隊,還是一個人做設計、開發,版本控制工具都能讓你從中獲益。

  通過版本控制工具,你可以保留同一檔案中在不同時期的版本,這對圖表和二進位制檔案都適用,尤其適合文字型別檔案。

  主流版本控制工具可以分為兩種:集中式和分散式。集中式版本控制工具需要一個伺服器儲存倉庫,你可以在合適的時候把程式碼提交到伺服器上。而分散式版本控制工具(DVCS)則不需要中心伺服器:每個倉庫的使用者都有自己的本地快取,將更新從一個本地倉庫傳遞到另一個的過程非常簡單隻需要從源系統push或者從目標系統pull即可。

  目前最流行的開源版本控制工具要數Subvision(SVN)、Git以及Mercurial(hg)了,其中SVN是集中式版本控制工具,Git和Mercurial則是分散式的。

  值得注意的是,有很多知名網站提供倉庫託管服務,比如bitbucket.org、SourceForge、GoogleCode以及Github等等,這些網站都提供免費託管服務,但在具體服務支援與收費上各不相同。

  2. 檔案比較工具

  無論你是想要與版本控制系統合併程式碼,還是僅僅想要比較兩個檔案的不同,檔案比較工具都是非常有用的。其中diff是一個非常有名的命令列比較工具,我也喜歡Beyond Compare這款圖形介面比較工具——可惜它並非免費,但是並不貴而且簡單、強大。除此之外,常見檔案比較工具還有SourceGearDiffMerge(免費、跨平臺=Windows/OS X/Linux),Compare It!(收費、僅支援Windows),DeltaWalker(較貴、僅支援OSX)以及UltraCompare(較貴、跨平臺)。

  3. 編輯器

  處理文字檔案的難以取決於你使用的軟體。重量級的編輯器,如Eclipse、NetBeans、Visual Studio都屬於是IDE(integrateddevelopment environment,整合開發環境),如果你需要做特定的工作,他們都非常強大。但有時候你僅僅想要簡單、快速地編輯檔案,系統自帶的編輯器(Windows下的Notepad和Machine下的TextEdit)雖然輕量但是不夠強大。這裡介紹幾個中量級的編輯器:Windows平臺的Notepad++、Mac平臺的TextWrangler都是不錯的免費編輯器,還有GNUemacs、Vim這樣強大、可擴充套件的自由軟體。

  4. 構建工具

  如果你使用IDE進行開發,僅僅單擊“Build”即可以為你編譯程式的原始碼。但是注意:編譯軟體時常常有很多細節的編譯選項,而使用IDE時常常被深藏在複雜的選單中。我認為,專業的程式設計師應該使用可定義的構建工具,選擇正確的編譯選項達到最優效果。

  5. 指令碼工具

  有時候你需要快速整合多個軟體以達到某個目的,這時很難選擇C或者C++這樣需要編譯的程式語言,因為它們在執行前需要先編譯成可執行的檔案。此時,更好的解決方案是指令碼語言,它們通常整合在作業系統中,編寫一個指令碼甚至可以在多臺計算機中執行。

  常見現代指令碼語言有Python、Ruby、Groovy、awk、Perl等等。不論你更喜歡那種,我建議你選擇其中一款。我很喜歡Python,不僅因為它簡單、鼓勵好的程式設計規範,而且擁有強大的除錯工具——基於Eclipse的PyDev。藉助PyDev,你可以設定斷點、並端部執行你的指令碼。

  6. 數值分析工具

  除非你打算做一些及其簡單的專案,或者為嵌入式系統進行邏輯程式設計,你常常會需要對資料有一個直觀地瞭解——圖表、或者曲線圖,又或者僅僅想要解一個方程,這時候你會需要資料分析工具,比如MATLABMathematicaMathCAD,它們都非免費,甚至價格昂貴,但是價格強大。

  如果你的需求簡單,SciLabOctavePyLab這些MATLAB的免費“克隆”版本也提供了某些MATLAB的基本功能,語法也與MATLAB相近或相同。其中PyLab用Python實現,如果你懂Python,或許可以將其利用到科學計算領域。

  7. 文件工具

  工程環境中,你常常需要和他人分享想法,很多軟體都可以做到這點,比如使用微軟的Visio可以提供流程圖、表,Word來編輯文件,PowerPoint來做演示。但它們都非免費,有時候你更需要免費或者更特化的文件工具。

  • 圖形視覺化工具——我常用的是基於命令列的graphviz,以及擁有互動介面的yEd。    
  • 流程圖——使用圖形表達思路。Quick Sequence Diagram Editor很基本,但是足以幫助你達到繪製這些圖形的目的。    
  • 排版工具——你可以使用WYSIWYG工具,也可以選擇非WYSIWYG軟體,又或者TeX、LaTeX,隨個人喜好。    
  • 程式碼自文件工具——Doxygen很常見,可以將程式碼中的註釋轉化成文件,JavaDoc則是轉為Java設計的文件工具。    

  8. 終端以及通訊工具

  有時候你會需要通過串列埠進行通訊,這時你就需要終端工具了,在Web瀏覽器出現之前,這更為常見。曾經與Windows繫結的HyperTerminal不夠強大,不建議使用,而且微軟在Vista之後也不再整合它。我個人更喜歡PuTTYtelTeraTermPro。其它通訊工具如FTP及其安全變種SFTP、SCP方面我最喜歡Cyberduck,現在支援Mac和Windows。

  9. 軟體QA(質量保障)工具

  對於開發者來說,為避免bug你肯定需要QA工具。我不是很清楚這方面,但是知道大概可以分以下幾類:

  • 靜態分析工具。它是一種分析軟體的工具,既可以分析軟體原始碼,也可以分析編譯後的檔案。最出名的莫過於面向C語言的lint,lint會像老是一樣在你程式碼的錯誤之處標出紅線,標出你的錯誤。Java語言有FindBugs對應,能夠幫助衡量程式碼複雜度——通常好的程式設計函式比較小,如果某個函式超過20-30行程式碼,你可以考慮將其分解了,這樣也更便於設計和除錯。    
  • 單元測試和程式碼覆蓋率。大型軟體測試通常極難,這是公認的;但是使用“單元測試”測試更小的軟體模組卻簡單得多。但是單元測試同樣也有不擅長的領域,比如嵌入式系統,雖然可以通過交叉編譯在PC上尋找bug,但並不能保證在嵌入式機器上效果一致。單元測試也有一定的技巧,比如可以編寫可重複利用的測試指令碼。程式碼覆蓋工具我僅見過同事使用Cantata++,但並不便宜。    
  • 程式碼“美化器”。如果你和同事使用相同的編碼風格,更容易尋找出簡單的語法錯誤。通常我們都有各自的程式設計習慣,但是可以通過軟體達到統一程式設計風格的效果——比如自動縮排、tab空格轉換等等。我使用過Uncrustify,以及其GUI工具UniversalIndentGU。    

  10. 基本命令列工具

  雖然GUI對於計算機互動是革命性的改進,但還有很多事用命令列做起來更加簡單,比如使用指令碼能夠輕易組合多個程式。如果你使用OS X或者Linux,那計算機上一般已經預裝了UNIX命令列工具,Windows使用者可以下載相應的二進位制檔案

  其它,諸如7zipCPU-ZSystem Explorer之類的軟體雖然沒有放在這個列表中,但也都是非常實用的工具。

  英文原文:EmbeddedRelated.com

相關文章