程序員技能與成長:程序員的必備工具箱(值得收藏)

本節將要介紹的多種實用工具,就可以幫我們全方位武裝成“懶惰”的程序員,例如可幫我們提升工作效率的硬件、操作系統和軟件。

可以幫我們提升工作效率的硬件

這裏盤點一下那些可以提升程序員工作效率的硬件設備。

1.顯示器

筆記本電腦基本上是程序員開發的標配,那麼要不要給自己再多配置一臺顯示器呢?配置一臺多大的顯示器呢?

在 StackOverflow2018 開發者調查報告中顯示,有 51.1%的開發者使用兩個顯示器,有17%的開發者使用三個以上顯示器。

美國猶他州立大學的研究人員也測試了工作效率與不同電腦配置的 關 聯 性 。他 們 讓 受 訪 者 完 成 同 樣 的 工 作 , 測 試 結 果 如 下(http://dwz.cn/Kf579):

◎ 使用24寸顯示器工作的人比使用18寸顯示器工作的人在工作效率上要高52%;

◎ 使用兩個 20 寸顯示器工作的人比使用單個 18 寸顯示器工作的人在工作效率上要高44%;

◎ 當顯示器達到26寸時,受訪者的工作效率開始下降。

所以,我們基本可以得出結論:額外配置一臺24寸左右的顯示器可以提升工作效率。因爲作爲程序員,我們可能要同時和 IDE、Linux命令行及瀏覽器等打交道,有多臺顯示器可以幫我們減少切換時間。

2.外設

鍵盤和鼠標等外設對於程序員來說,其重要性不言而喻。在

StackOverflow2018 開發者調查報告中顯示,有超過52%的開發者認爲

人體工程學鍵盤和鼠標可以使自己在繁忙的工作中感到一點點舒適

感。

關於鍵盤和鼠標,筆者認爲,一個好的機械鍵盤或電容鍵盤加一個比較靈敏的無線鼠標,不僅可以令一個程序員的工作效率得到很大提升,還可以在一定程度上起到愉悅心情的作用,尤其是通過調試解決一個Bug後,最後敲擊鍵盤的那一刻。

可以幫我們提升工作效率的操作系統

目前,主流的操作系統共有三種:Linux、Windows及Mac OS。關於操作系統的使用及選擇,StackOverflow 在 2018 年也做過類似調查(DeveloperSurveyResults2018,https://insights.stackoverflow.com/survey/2018),

結果顯示:

主要使用Windows操作系統的開發者佔了49.9%,主要使用Mac OS操作系統的開發者佔了 26.7%,主要使用 Linux操作系統的開發者佔了23.2%。從數字上來看,雖然使用Windows操作系統的開發者佔了一半左右,但另一項關於程序員最想使用的系統平臺的調查結果顯示,有76.5%的開發者期望使用Linux操作系統,有63.9%的開發者喜歡並且期望使用Mac OS操作系統,有61.2%的開發者期望使用Windows操作系統。

對於以上三種操作系統,筆者在自己的開發生涯中均使用過,目前使用Mac OS作爲主要的操作系統進行開發。由於開發者開發出來的應用基本都部署在Linux服務器上,而且 Linux 操作系統提供了很多Shell 命令,可以快速地進行構建、編譯、執行、排查問題等,所以在日常的純代碼開發、交付及運維方面可以大大提升效率。但是,程序員又無法避免地要和各種軟件打交道,比如開發工具、瀏覽器、畫圖工具等,這時提供圖形界面的Windows操作系統就可以很好地支持這些圖形化軟件了。Mac OS作爲一款基於UNIX的圖形化操作系統,就兼容了Linux和Windows操作系統的優點,既可以運行Shell命令,又可以進行圖形化操作,當然,Mac OS操作系統也有一些缺點,比如支持的軟件不夠多、價格昂貴等。

筆者覺得,程序員選擇操作系統的優先級順序應該是Mac OS、Linux、Windows。

可以幫我們提升工作效率的軟件

這裏再介紹一些可以幫助開發者提升工作效率的軟件,主要包括開發工具、版本控制工具、自動化構建工具和畫圖工具等。

1.開發工具對於開發者,

尤其是Java開發者來說,使用開發工具編寫代碼真的可以大大提升工作效率,因爲現在很多IDE都有很強大的工具,不僅提供了代碼補全、錯誤提示、自動編譯等功能,還提供了各種插件,方便和其他工具融合,能大大提升寫代碼的效率及代碼質量。

目前市面上主要有兩款Java代碼開發工具:Eclipse和IntelliJIDEA,這兩款開發工具之爭由來已久,不過最近幾年,IntelliJ IDEA逐漸撼動了Eclipse的霸主地位,成爲開發者的首選開發工具。在2013年的Google I/O大會上,Google推出了新的Android集成IDE“AndroidStudio”,其最大的轉變就是從Eclipse切換到了IntelliJ IDEA。

筆者也經歷過從Eclipes轉向IntelliJ IDEA的過程,相比之下,Intellij IDEA在某些方面確實比Eclipse更加出色一些,配合Mac OS操作系統上的快捷鍵,真的可以在開發效率上提升一大截。

關於開發者使用的 IDE,Jet Brains 做過一項調查,結果顯示:有 59%的開發者使用IntelliJ,有30%的開發者使用Eclipse,只有不到5%的開發者使用Sublime和Vim等普通文本編輯器。

2.版本控制工具

程序員在協作開發時不可避免地要使用版本控制工具對代碼進行管理,版本控制工具主要用於存儲和追蹤被管理的文件的修改歷史,是軟件開發者的必備工具。

目 前 市 面 上 比 較 成 熟 的 版 本 控 制 工 具 有 CVS 、 VisualSourceSafe、PVCS、Subversion (SVN)和Git等,SVN和Git的使用較爲廣泛。

無論是SVN還是Git,都提供了很好的版本控制功能,例如對代碼的統一管理、衝突解決、代碼權限控制、分支開發和合並等。筆者認爲,開發者應該熟練掌握SVN和Git,比如代碼拉取、代碼提交、代碼合併和衝突解決等,尤其要掌握一些 Shell 命令,這可以節省大量的時間。雖然目前有很多開源代碼及很多公司的內部代碼都傾向於使用Git進行代碼託管,但我們不能保證所遇到的所有代碼都使用了Git。公司規模越大,使用SVN進行代碼託管的可能性便越大,畢竟遷移也是需要一定成本的。

3.自動化構建工具

自動化構建指自動創建軟件組建的一組進程,包括將計算機源代碼編譯成二進制碼、將二進制碼包裝成軟件包並對其進行自動化測試。很早以前的自動化構建都是通過創建Make 來完成的,後來發展爲GNU Make。隨着時間的推移,如今的軟件開發主要使用更優秀的自動化構建工具來完成,例如Java世界中的三大構建工具Ant、Maven和Gradle,如今,Ant幾乎要退出歷史的舞臺了。

Maven和Gradle之所以能夠贏得衆多程序員的青睞,主要是因爲它們在依賴管理、衝突解決、項目構建、項目結構管理和插件機制等方面的出色表現。

4.畫圖工具

所謂一圖勝千言,無論是自己梳理思路,還是給別人講解,圖案都是很好的形式。而且,程序員還經常要做一些PPT等,有了這些畫圖工具,就能大顯身手。

1)思維導圖——XMind

人類大腦的最自然思考方式是放射性思考,也就是我們常說的發散性思維。我們通常在思考一個問題的時候,都是以一個思維點爲起點,然後不斷進行發散式展開的。如果我們將這個思考過程通過圖形化的方式表達出來,就是一張思維導圖。思維導圖可以有效地把思維模式表現出來,有利於人腦的擴散思維的展開。如圖1.12所示是一張關於“提升工作效率的軟件”的思維導圖。

圖1.12

XMind 是一款非常實用的商業思維導圖軟件,採用 Java 語言開發而成,具備跨平臺運行的性質,且基於EclipseRCP體系結構,支持插件通過編寫XML清單文件擴展系統定義好的擴展點,幫助用戶在真正意義上提高生產效率,被著名的互聯網媒體Lifehacker評選爲“最佳頭腦風暴和思維導圖工具”及“最受歡迎的思維導圖軟件”。

XMind 的程序主體由一組插件構成,包括一個核心主程序插件、一組 Eclipse 運行時插件、一個幫助文檔插件和一組多語種資源文件插件,對Eclipse用戶非常友好。

XMind不僅可以繪製思維導圖,還可以繪製魚骨圖、二維圖、樹形圖、邏輯圖和組織結構圖(Org、Tree、Logic Chart、Fishbone),並且可以方便地在這些展示形式之間進行轉換。用戶可以導入MindManager、FreeMind數據文件,靈活定製節點外觀、插入圖標、豐富的樣式和主題。其輸出格式有HTML和圖片。

2)UML畫圖工具

UML(Unified Model Language)即統一建模語言,又被稱爲標準建模語言,是用來對軟件密集系統進行可視化建模的一種語言。開發人員在做詳細設計時,免不了要和各種UML圖打交道,例如用例圖、類圖、對象圖、時序圖、活動圖和狀態圖等。

簡單來說,開發人員在寫代碼之前就需要了解需求,在這之後要對軟件系統進行建模,將抽象的語言描述轉換成可視化的模型。而在建模過程中需要一種標準的語言,這種語言就是UML。

目前市面上有很多 UML畫圖工具可供選擇,它們均能滿足基本的畫圖功能,下面簡單列舉幾種。

◎ Rational Rose:是Rational公司出品的一種面向對象的統一建模語言的可視化建模工具,主要用於可視化建模。

◎ Visual Paradigm for UML(VP-UML):是一種功能強大、跨平臺、使用便捷、直觀的 UML建模和 CASE工具,它可以被整合在其他CASE工具或者其他 IDE工具中。Visual Paradigm for UML支持UML建模、數據庫建模、對象關係映射、逆向工程和Java雙向工程等,功能異常強大。

◎ StarUML(SU):是一款開源的UML開發工具,支持繪製用例圖、類圖、序列圖、狀態圖等9種常用的UML圖,具有發展快、靈活、可擴展性強等優點,唯一的不足之處是在反向工程時只能生成類圖,不能生成類之間的關係。

5.Markdown編輯器

Markdown是一種輕量級標記語言,創始人爲約翰·格魯伯(JohnGruber),允許人們使用易讀易寫的純文本格式編寫文檔,然後將文本格式轉換成有效的 XHTML (或者HTML)文檔。

作爲程序員,我們除了要具備編程的硬技能,還要具備寫作的軟件,而首選的寫作方式就是 Markdown。目前,很多大型博客網站都開始支持使用 Markdown 寫文章,這無疑是對程序員的一種示好行爲,著名的代碼託管網站 GitHub 也支持使用 Markdown 語法來編輯README文件等,如圖1.13所示。

圖1.13

關於Markdown的編輯器,目前市面上也有很多選擇,主要有Mou、MacDown、Typed和Bear等,還有很多在線的Markdown編輯器,在後面的在線工具章節中會詳細介紹。

還需要提及的一點是,其實使用哪種Markdown編輯器並不很重要,重要的是程序員應該掌握常用的Markdown語法。這樣寫出來的文章或者文檔,可以在任意支持MD語法的平臺上查看。

6.文本編輯器

前面介紹過Java開發常用的IDE,但是在某些情況下我們僅需要打開一個單獨的文本文件,比如打開一個 XML格式的文件、一個 JSON格式的文件等,這時一款好用的文本編輯器就派上用場了。

Sublime Text是一款流行的代碼編輯器軟件,可運行在Linux、Windows和Mac OS X等操作系統之上,是許多程序員喜歡使用的一款文本編輯器軟件。它具有代碼高亮、語法提示、自動完成且反映快速的編輯器軟件,不僅界面華麗,還支持插件擴展機制,如圖1.14所示。

圖1.14

Atom是GitHub專門爲程序員推出的跨平臺的文本編輯器,因爲有簡潔、直觀的圖形界面而受到了廣大程序員的青睞,而且它有很多有趣的特點:支持CSS、HTML、JavaScript等網頁編程語言;支持宏,自動完成分屏功能,集成了文件管理器;支持Mac OS、Windows和Linux操作系統,支持Node.js所寫的插件,並內置由GitHub提供的Git版本控制系統。多數的延伸包皆爲開放源代碼授權,並由社區建置與維護。

Notepad++也是一套被廣大程序員選用的純文本編輯器,基於同樣開放源碼的Scintilla文本編輯組件研發而成,整個項目起初被託管於SourceForge.net,曾經兩度獲得SourceForge社區選擇獎——最佳開發工具。Notepad++在2010年6月被託管於TuxFamily,現被託管於GitHub。

7.其他軟件

除了以上介紹的一些必備軟件,還有些常用工具也是程序員在日常工作中必不可少的,例如Host綁定、HTTP調試等。

1)Host綁定

在日常開發工作中,我們對 Host 綁定肯定不陌生,因爲我們幾乎每天都要和它打交道。我們可能經常要在不同的Host綁定之間來回切換,尤其是在Java Web開發中,在本地開發測試時可能使用的是一套 Host 綁定,在測試環境部署之後提交給測試人員進行測試時又要使用另一套 Host 綁定。在測試之後,要經歷預發佈、灰度發佈等,都需要一套新的Host綁定。採用好用的Host綁定工具可以大大節省Host綁定切換的時間。

SwitchHosts是一個非常方便、快捷的Host綁定切換工具,免費、開源,支持預發高亮、方案多選、單擊行號快速切換註釋、系統菜單欄快捷切換、方案導入導出等功能,如圖1.15所示。

圖1.15

2)HTTP調試

在日常的Web開發中,我們除了會和Host綁定打交道,還經常會和RESTful API打交道,有時我們需要一個工具來幫我們發送HTTP請求,或者說是模擬HTTP請求,比如幫我們發送POST請求等,這時就需要一款可以模擬發送HTTP請求的工具。

Postman是Google開發的一款功能強大的網頁調試與發送網頁HTTP請求,並能運行測試用例的Chrome插件。除插件外,也提供軟件下載。它可以模擬各種HTTP請求,從常用的GET、POST到RESTful的PUT、DELETE等,甚至可以發送文件及額外的Header等。Postman 可以將Response內容的格式自動美化,將 JSON、XML或者 HTML都整理成我們可以閱讀的格式。Postman 還支持編寫測試腳本,可以快速檢查Request 結果,並返回測試結果。總之,Postman是一款非常不錯的可以用來做HTTP調試的軟件。

 在線工具

前面介紹了很多常用軟件,接下來介紹一些在線工具,我們無須安裝這些在線工具,可以在瀏覽器上直接使用,非常便捷。

1.搜索類在線工具

本節講解幾種搜索類在線工具。Grepcode(http://grepcode.com/)是一個面向於 Java 開發人員的網站,在這裏你可以通過Java的projects、classes等關鍵字在線查看對應的源碼。通過Grepcode,還可以在線查看很多不同版本的源碼,並下載相關的 jar 包、源碼 jar 包和 Doc 文件。同樣,我們可以使用xxx-1.1.1.jar類似的名字直接找到對應的jar包並下載。

SearchCode(https://searchcode.com/)是一個源碼搜索引擎,目前支持從 GitHub、Bitbucket、Google Code、CodePlex、SourceForge和Fedora Project平臺搜索公開的源碼,如圖1.16所示。

圖1.16

對於 mvnrepository(http://mvnrepository.com)就不詳細解釋了,它用於查詢 Maven的gav(groupId、artifactId、version)等信息,如圖1.17所示。

圖1.17

2.生成類在線工具

下面講解各種生成類在線工具。1)用SQL自動生成Java代碼AutoJCode(http://www.autojcode.com/code/sql2class.jsp)可以從SQL的建表語句中生成一個DO類。很多時候,我們在有了數據庫的建表語句之後,會希望快速生成與之相對應的POJO,這時這種自動生成工具就派上用場了。

2)用JSON生成Java類

JSON是目前Java Web中數據傳輸的主要格式,我們在很多時候都會有將JSON轉成Java對象的需求。有時合作方會提供一個JSON樣例,需 要 我 們 自 定 義 Java 類 , 這 時 這 個 工 具 就 派 上 用 場 了 。

BeJSON(http://www.bejson.com/json2javapojo)就是一款比較好用的工具。

3)Corn表達式的生成

Cron一般用於配置定時任務的執行,但是要想一次性地把一個Corn表達式配置好,確實很難,需要我們記住其語法。有一些在線工具可以提供圖形化的界面,只要輸入想要定時執行的週期等,就可以自 動 生 成 Corn 表 達 式 。推 薦 使 用 pdtools 提 供 的 becorn(http://www.pdtools.net/tools/becorn.jsp)。

4)正則代碼的生成

正則表達式,又叫作規則表達式,是計算機科學中的一個概念,通常被用於檢索、替換那些符合某個模式(規則)的文本。在使用正則表達式進行字符串過濾時,需要用事先定義好的一些特定字符及這些特定字符的組合,組成一個規則字符串,這個規則字符串用於表達對字符串的一種過濾邏輯。這個規則字符串的定義通常是比較麻煩和複雜的,也需要經過大量的測試和驗證才能被採用。某些網站(如http://tool.chinaz.com/tools/regexgenerate)提供了正則表達式的生成工具,可以一鍵生成身份證號、郵箱、手機號等常用的正則表達式。

3.轉換類在線工具

下面講解一些轉換類在線工具。

1)編碼轉換

編碼問題一直困擾着開發人員,尤其在Java中更加明顯,因爲Java是跨平臺的語言,在不同的平臺之間及編碼之間的切換較多。在計算機中提供了多種編碼方式,常見的有ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16等。有些時候,開發人員需要通過編碼轉換的方式來查看不同編碼下的文件內容。“站長工具”的編碼轉換(http://tool.chinaz.com/tools/unicode.aspx)功能比較全面,提供了Unicode編碼、UFT8編碼、URL編碼及解碼等功能。

2)時間戳轉換

時間戳(英語:Timestamp)是指在一連串的資料中加入辨識文字,如時間或日期,用於保障本地端(local)資料的更新順序與遠端(remote)一致。

在 Java 中有很多地方都會用到時間戳,也經常會使用這種轉換工具(http://tool.chinaz.com/Tools/unixtime.aspx)。

3)世界時間轉換

世界時間轉換,比較常見的是將北京時間轉換成紐約時間、將紐約時間轉換成洛杉磯時間等。Timebie(http://www.timebie.com/cn/easternbeijing.php)便提供了世界時間相互轉換的功能。

4)加密、解密加密、解密也是在 Java Web 中經常遇到的,有時我們需要驗證加密算法是否正確,或者需要解密等,就需要一款在線工具(參見http ://tool.chinaz.com/tools/textencrypt.aspx ) 來 快 速 驗 證了。

5)單位換算

Convertworld(https://www.convertworld.com/zh-hans/)是一個比較全的單位換算的網站。筆者經常用它進行時間單位和貨幣單位的換算。

4.檢查類在線工具

下面講解一些檢查類在線工具。

1)JSON在線驗證及格式化

JSON 是一種由道格拉斯·克羅克福特構想和設計的輕量級的數據交換語言,該語言以容易讓人閱讀的文字爲基礎,傳輸由屬性值或者序列性的值組成的數據對象。目前有很多編程語言都支持JSON格式數據的生成和解析。

在很多Web應用中都會使用JSON進行數據傳輸,所以,我們在開發過程中會經常接觸JSON格式的文本,有時我們不確定這個文本是否完全符合JSON格式,或者想更清晰地查看這個JSON文本的格式關係,這就需要一款工具進行JSON格式的驗證和格式化。

筆 者 用 過 很 多 JSON 在 線 格 式 化 工 具 , 經 過 實 踐 發 現 ,Json.cn(https://www.json.cn/)比較不錯,不僅支持JSON格式的驗證及格式化,還可以將JSON格式壓縮成普通文本等,如圖1.18所示。

圖1.18

2)Diff Check

使用過SVN或者Git的人對Diff Check肯定不陌生,但有時候我們修改的文本內容並沒有被版本控制工具管理起來,那麼可以使用在線的網站查看文件的修改情況,比如Diffchecker(https://www.diffchecker.com/),如圖1.19所示。

圖1.19

3)正則驗證

Java 開發人員對正則表達式肯定不陌生。“站長工具”提供的正則驗證(http://tool.chinaz.com/regex)就比較不錯。

5.對照類在線工具

對照類在線工具如下。

◎ ASCII 對 照 表 :http ://tool.oschina.net/commons ?type=4。

◎ HTTP狀態碼:http://tool.oschina.net/commons?type=5。

◎ HTTP Content-type:http://tool.oschina.net/commons.

◎TCP/UDP常見端口參考:http://tool.oschina.net/commons?type=7。◎ HTML 轉 義 字 符 :http ://tool.oschina.net/commons ?type=2。

◎ RGB 顏 色 參 考 :http ://tool.oschina.net/commons ?type=3。

◎ 網 頁 字 體 參 考 :http ://tool.oschina.net/commons ?type=8。

6.其他類型的在線工具

下面講解其他類型的一些在線工具。

1)在線UML製圖

ProcessOn(https://www.processon.com/)是一個在線協作繪圖平臺,爲用戶提供了非常強大、易用的作圖工具,支持在線創作流程圖、BPMN、UML 圖、UI 界面原型設計、iOS界面原型設計等。

2)在線代碼運行

coderunner(https://tool.lu/coderunner/)可以在線運行PHP、C、C++、Go、Python、Java、Groovy等代碼,在我們手頭沒有IDE又想執行一個小程序時是個不錯的選擇。

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章