Perl之父Larry Wall曾在 Programming Perl 一書中提到:html
程序員的三個美德是懶惰、不耐煩和傲慢。程序員
懶惰,是程序員美德的第一要素。Larry Wall所說的「懶惰」,並非安於現狀和不思進取,而是付出最少的時間或者精力來達到一樣甚至更好的目標。「懶惰」的程序員會盡可能使本身的代碼既實用又有很好的可讀性,這樣能夠節省後面的不少維護成本;還會盡力完善代碼中的註釋及文檔,以避免別人問本身太多問題,更擅長使用各類工具,從方方面面提高本身的效率。數據庫
本文選自《程序員的三門課:技術精進、架構修煉、管理探祕》一書,本文會向你介紹一些很是實用的工具,這些工具能夠大大提高你的工做效率,全方位把你武裝成一名「懶惰」的程序員。編程
對於開發者,尤爲是Java開發者來講,使用開發工具編寫代碼真的能夠大大提高工做效率,由於如今不少IDE都有很強大的工具,不只提供了代碼補全、錯誤提示、自動編譯等功能,還提供了各類插件,方便和其餘工具融合,能大大提高寫代碼的效率及代碼質量。架構
目前市面上主要有兩款Java代碼開發工具:Eclipse和IntelliJIDEA,這兩款開發工具之爭由來已久,不過最近幾年,IntelliJIDEA逐漸撼動了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等普通文本編輯器。編輯器
程序員在協做開發時不可避免地要使用版本控制工具對代碼進行管理,版本控制工具主要用於存儲和追蹤被管理的文件的修改歷史,是軟件開發者的必備工具。分佈式
目前市面上比較成熟的版本控制工具備CVS、Visual SourceSafe、PVCS、Subversion(SVN)和Git等,SVN和Git的使用較爲普遍。高併發
不管是SVN仍是Git,都提供了很好的版本控制功能,例如對代碼的統一管理、衝突解決、代碼權限控制、分支開發和合並等。開發者應該熟練掌握SVN和Git,好比代碼拉取、代碼提交、代碼合併和衝突解決等,尤爲要掌握一些Shell命令,這能夠節省大量的時間。
雖然目前有不少開源代碼及不少公司的內部代碼都傾向於使用Git進行代碼託管,但咱們不能保證所遇到的全部代碼都使用了Git。公司規模越大,使用SVN進行代碼託管的可能性便越大,畢竟遷移也是須要必定成本的。
自動化構建指自動建立軟件組建的一組進程,包括將計算機源代碼編譯成二進制碼、將二進制碼包裝成軟件包並對其進行自動化測試。很早之前的自動化構建都是經過建立Make來完成的,後來發展爲GNU Make。隨着時間的推移,現在的軟件開發主要使用更優秀的自動化構建工具來完成,例如Java世界中的三大構建工具Ant、Maven和Gradle,現在,Ant幾乎要退出歷史的舞臺了。
Maven和Gradle之因此可以贏得衆多程序員的青睞,主要是由於它們在依賴管理、衝突解決、項目構建、項目結構管理和插件機制等方面的出色表現。
所謂一圖勝千言,不管是本身梳理思路,仍是給別人講解,圖案都是很好的形式。並且,程序員還常常要作一些PPT等,有了這些畫圖工具,就能大顯身手。
1)思惟導圖——XMind
人類大腦的最天然思考方式是放射性思考,也就是咱們常說的發散性思惟。咱們一般在思考一個問題的時候,都是以一個思惟點爲起點,而後不斷進行發散式展開的。若是咱們將這個思考過程經過圖形化的方式表達出來,就是一張思惟導圖。思惟導圖能夠有效地把思惟模式表現出來,有利於人腦的擴散思惟的展開。如圖所示是一張關於「提高工做效率的軟件」的思惟導圖。
XMind是一款很是實用的商業思惟導圖軟件,採用Java語言開發而成,具有跨平臺運行的性質,且基於EclipseRCP體系結構,支持插件經過編寫XML清單文件擴展系統定義好的擴展點,幫助用戶在真正意義上提升生產效率,被著名的互聯網媒體Lifehacker評選爲「最佳頭腦風暴和思惟導圖工具」及「最受歡迎的思惟導圖軟件」。
XMind的程序主體由一組插件構成,包括一個核心主程序插件、一組Eclipse運行時插件、一個幫助文檔插件和一組多語種資源文件插件,對Eclipse用戶很是友好。
XMind不只能夠繪製思惟導圖,還能夠繪製魚骨圖、二維圖、樹形圖、邏輯圖和組織結構圖(Org、Tree、LogicChart、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圖,具備發展快、靈活、可擴展性強等優勢,惟一的不足之處是在反向工程時只能生成類圖,不能生成類之間的關係。
Markdown是一種輕量級標記語言,創始人爲約翰·格魯伯(John Gruber),容許人們使用易讀易寫的純文本格式編寫文檔,而後將文本格式轉換成有效的XHTML(或者HTML)文檔。
做爲程序員,咱們除了要具有編程的硬技能,還要具有寫做的軟件,而首選的寫做方式就是Markdown。目前,不少大型博客網站都開始支持使用Markdown寫文章,這無疑是對程序員的一種示好行爲,著名的代碼託管網站GitHub也支持使用Markdown語法來編輯README文件等,如圖所示。
關於Markdown的編輯器,目前市面上也有不少選擇,主要有Mou、MacDown、Typed和Bear等,還有不少在線的Markdown編輯器,在後面的在線工具章節中會詳細介紹。
還須要說起的一點是,其實使用哪一種Markdown編輯器並不很重要,重要的是程序員應該掌握經常使用的Markdown語法。這樣寫出來的文章或者文檔,能夠在任意支持MD語法的平臺上查看。
前面介紹過Java開發經常使用的IDE,可是在某些狀況下咱們僅須要打開一個單獨的文本文件,好比打開一個XML格式的文件、一個JSON格式的文件等,這時一款好用的文本編輯器就派上用場了。
SublimeText是一款流行的代碼編輯器軟件,可運行在Linux、Windows和Mac OS X等操做系統之上,是許多程序員喜歡使用的一款文本編輯器軟件。它具備代碼高亮、語法提示、自動完成且反映快速的編輯器軟件,不只界面華麗,還支持插件擴展機制,如圖所示。
Atom是GitHub專門爲程序員推出的跨平臺的文本編輯器,由於有簡潔、直觀的圖形界面而受到了廣大程序員的青睞,並且它有不少有趣的特色:支持CSS、HTML、JavaScript等網頁編程語言;支持宏,自動完成分屏功能,集成了文件管理器;支持Mac OS、Windows和Linux操做系統,支持Node.js所寫的插件,並內置由GitHub提供的Git版本控制系統。多數的延伸包皆爲開放源代碼受權,並由社區建置與維護。
Notepad++也是一套被廣大程序員選用的純文本編輯器,基於一樣開放源碼的Scintilla文本編輯組件研發而成,整個項目起初被託管於SourceForge.net,曾經兩度得到SourceForge社區選擇獎——最佳開發工具。Notepad++在2010年6月被託管於TuxFamily,現被託管於GitHub。
1)Host綁定
在平常開發工做中,咱們對Host綁定確定不陌生,由於咱們幾乎天天都要和它打交道。咱們可能常常要在不一樣的Host綁定之間來回切換,尤爲是在Java Web開發中,在本地開發測試時可能使用的是一套Host綁定,在測試環境部署以後提交給測試人員進行測試時又要使用另外一套Host綁定。在測試以後,要經歷預發佈、灰度發佈等,都須要一套新的Host綁定。採用好用的Host綁定工具能夠大大節省Host綁定切換的時間。
SwitchHosts是一個很是方便、快捷的Host綁定切換工具,免費、開源,支持預發高亮、方案多選、單擊行號快速切換註釋、系統菜單欄快捷切換、方案導入導出等功能。
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篇介紹程序員的技能成長路徑,介紹如何經過學習來加速成長,並講解很是重要的業務分析和設計知識;
第2篇詳細介紹了架構修煉中的必備架構思惟模式、架構設計過程,還經過真實案例剖析了架構設計的核心要素及關注點,以及如何經過架構設計來把控質量和風險;
第3篇總結了作技術管理的訣竅,揭祕如何從準備作技術管理到實現自我管理再到實現團隊管理。
▶ 做者簡介
於君澤
某互聯網公司技術專家,在分佈式系統架構設計、高併發系統設計、領域建模、研發管理、內建質量等方面有較多心得,樂於交流和分享,曾創立技術社羣「中生代技術」。維護技術公衆號「技術瑣話」。
李偉山
現任某人工智能公司技術總監,江湖人稱「山哥」,在分佈式系統架構設計、高併發系統設計、系統穩定性保障等方面積累了豐富的實踐經驗,擅於利用數據分析解決實際問題,對新技術有濃厚的興趣,樂於分享。我的技術公衆號:技術方舟。
張洪亮
網名Hollis,知名技術博主,我的技術博客(http://www.hollischuang.com)閱讀量達數百萬。90後程序員,2015年畢業於哈爾濱理工大學,現任某互聯網公司技術專家,專一於Java研發、技術架構及程序員的成長等方面。我的技術公衆號:Hollis。
彭首長
熊貓優福聯合創始人,聚美優品前技術總監。在團隊管理、領域設計、分佈式架構、高併發設計、IoT架構等方面有豐富的實踐經驗,擅長行業分析,對新技術高度敏感,熱衷於技術實踐且樂於分享。
劉朋
高績效團隊教練,教練型領導,中生代技術社區聯合創始人,北京大學理學學士、工學碩士。現就任於中國移動(成都)5G產業研究院,曾任諾基亞通訊(成都)有限公司研發經理。在敏捷實踐、高績效團隊教練技術、技術團隊管理等方面積累了豐富的經驗,並總結出一套特別適合程序員突破自身瓶頸、快速成長的領導力模式。