小編說: 疫情像施了魔法一樣,改變了我們每個人春節(jié)的軌跡。時間則從永遠不夠用突然變成了多得似乎不知干什么用。博文菌希望疫情沒有改變我們那顆求知若渴的心。
博文菌在前兩天已經(jīng)為您開放了 博文視點學院平臺上80余本電子書+有聲書 ,供大家免費學習,我們也打探好了京東物流,無休為您服務!
___
Perl之父Larry Wall曾在 Programming Perl 一書中提到:程序員的三個美德是懶惰、不耐煩和傲慢。
懶惰,是程序員美德的第一要素。Larry Wall所說的“懶惰”,并不是安于現(xiàn)狀和不思進取,而是付出最少的時間或者精力來達到同樣甚至更好的目標?!皯卸琛钡某绦騿T會盡量使自己的代碼既實用又有很好的可讀性,這樣可以節(jié)省后面的很多維護成本;還會盡力完善代碼中的注釋及文檔,以免別人問自己太多問題,更擅長使用各種工具,從方方面面提升自己的效率。
本文選自《程序員的三門課:技術精進、架構修煉、管理探秘》一書,本文會向你介紹一些非常實用的工具,這些工具可以大大提升你的工作效率,全方位把你武裝成一名“懶惰”的程序員。
對于開發(fā)者,尤其是Java開發(fā)者來說,使用開發(fā)工具編寫代碼真的可以大大提升工作效率,因為現(xiàn)在很多IDE都有很強大的工具,不僅提供了代碼補全、錯誤提示、自動編譯等功能,還提供了各種插件,方便和其他工具融合,能大大提升寫代碼的效率及代碼質量。
目前市面上主要有兩款Java代碼開發(fā)工具:Eclipse和IntelliJIDEA,這兩款開發(fā)工具之爭由來已久,不過最近幾年,IntelliJIDEA逐漸撼動了Eclipse的霸主地位,成為開發(fā)者的首選開發(fā)工具。在2013年的Google I/O大會上,Google推出了新的Android集成IDE“AndroidStudio”,其最大的轉變就是從Eclipse切換到了IntelliJ IDEA。
筆者也經(jīng)歷過從Eclipes轉向IntelliJ IDEA的過程,相比之下,Intellij IDEA在某些方面確實比Eclipse更加出色一些,配合Mac OS操作系統(tǒng)上的快捷鍵,真的可以在開發(fā)效率上提升一大截。
關于開發(fā)者使用的IDE,Jet Brains做過一項調查,結果顯示:有59%的開發(fā)者使用IntelliJ,有30%的開發(fā)者使用Eclipse,只有不到5%的開發(fā)者使用Sublime和Vim等普通文本編輯器。
程序員在協(xié)作開發(fā)時不可避免地要使用版本控制工具對代碼進行管理,版本控制工具主要用于存儲和追蹤被管理的文件的修改歷史,是軟件開發(fā)者的必備工具。
目前市面上比較成熟的版本控制工具有CVS、Visual SourceSafe、PVCS、Subversion(SVN)和Git等,SVN和Git的使用較為廣泛。
無論是SVN還是Git,都提供了很好的版本控制功能,例如對代碼的統(tǒng)一管理、沖突解決、代碼權限控制、分支開發(fā)和合并等。開發(fā)者應該熟練掌握SVN和Git,比如代碼拉取、代碼提交、代碼合并和沖突解決等,尤其要掌握一些Shell命令,這可以節(jié)省大量的時間。
雖然目前有很多開源代碼及很多公司的內部代碼都傾向于使用Git進行代碼托管,但我們不能保證所遇到的所有代碼都使用了Git。公司規(guī)模越大,使用SVN進行代碼托管的可能性便越大,畢竟遷移也是需要一定成本的。
自動化構建指自動創(chuàng)建軟件組建的一組進程,包括將計算機源代碼編譯成二進制碼、將二進制碼包裝成軟件包并對其進行自動化測試。很早以前的自動化構建都是通過創(chuàng)建Make來完成的,后來發(fā)展為GNU Make。隨著時間的推移,如今的軟件開發(fā)主要使用更優(yōu)秀的自動化構建工具來完成,例如Java世界中的三大構建工具Ant、Maven和Gradle,如今,Ant幾乎要退出歷史的舞臺了。
Maven和Gradle之所以能夠贏得眾多程序員的青睞,主要是因為它們在依賴管理、沖突解決、項目構建、項目結構管理和插件機制等方面的出色表現(xiàn)。
所謂一圖勝千言,無論是自己梳理思路,還是給別人講解,圖案都是很好的形式。而且,程序員還經(jīng)常要做一些PPT等,有了這些畫圖工具,就能大顯身手。
1. 思維導圖——XMind
人類大腦的最自然思考方式是放射性思考,也就是我們常說的發(fā)散性思維。我們通常在思考一個問題的時候,都是以一個思維點為起點,然后不斷進行發(fā)散式展開的。如果我們將這個思考過程通過圖形化的方式表達出來,就是一張思維導圖。思維導圖可以有效地把思維模式表現(xiàn)出來,有利于人腦的擴散思維的展開。如圖所示是一張關于“提升工作效率的軟件”的思維導圖。
XMind是一款非常實用的商業(yè)思維導圖軟件,采用Java語言開發(fā)而成,具備跨平臺運行的性質,且基于EclipseRCP體系結構,支持插件通過編寫XML清單文件擴展系統(tǒng)定義好的擴展點,幫助用戶在真正意義上提高生產(chǎn)效率,被著名的互聯(lián)網(wǎng)媒體Lifehacker評選為“最佳頭腦風暴和思維導圖工具”及“最受歡迎的思維導圖軟件”。
XMind的程序主體由一組插件構成,包括一個核心主程序插件、一組Eclipse運行時插件、一個幫助文檔插件和一組多語種資源文件插件,對Eclipse用戶非常友好。
XMind不僅可以繪制思維導圖,還可以繪制魚骨圖、二維圖、樹形圖、邏輯圖和組織結構圖(Org、Tree、LogicChart、Fishbone),并且可以方便地在這些展示形式之間進行轉換。用戶可以導入MindManager、FreeMind數(shù)據(jù)文件,靈活定制節(jié)點外觀、插入圖標、豐富的樣式和主題。其輸出格式有HTML和圖片。
2.UML畫圖工具
UML(Unified Model Language)即統(tǒng)一建模語言,又被稱為標準建模語言,是用來對軟件密集系統(tǒng)進行可視化建模的一種語言。開發(fā)人員在做詳細設計時,免不了要和各種UML圖打交道,例如用例圖、類圖、對象圖、時序圖、活動圖和狀態(tài)圖等。
簡單來說,開發(fā)人員在寫代碼之前就需要了解需求,在這之后要對軟件系統(tǒng)進行建模,將抽象的語言描述轉換成可視化的模型。而在建模過程中需要一種標準的語言,這種語言就是UML。
目前市面上有很多UML畫圖工具可供選擇,它們均能滿足基本的畫圖功能,下面簡單列舉幾種。
- Rational Rose:是Rational公司出品的一種面向對象的統(tǒng)一建模語言的可視化建模工具,主要用于可視化建模。
- Visual Paradigm for UML(VP-UML):是一種功能強大、跨平臺、使用便捷、直觀的UML建模和CASE工具,它可以被整合在其他CASE工具或者其他IDE工具中。Visual Paradigm for UML支持UML建模、數(shù)據(jù)庫建模、對象關系映射、逆向工程和Java雙向工程等,功能異常強大。
- StarUML(SU):是一款開源的UML開發(fā)工具,支持繪制用例圖、類圖、序列圖、狀態(tài)圖等9種常用的UML圖,具有發(fā)展快、靈活、可擴展性強等優(yōu)點,唯一的不足之處是在反向工程時只能生成類圖,不能生成類之間的關系。
Markdown是一種輕量級標記語言,創(chuàng)始人為約翰·格魯伯(John Gruber),允許人們使用易讀易寫的純文本格式編寫文檔,然后將文本格式轉換成有效的XHTML(或者HTML)文檔。
作為程序員,我們除了要具備編程的硬技能,還要具備寫作的軟件,而首選的寫作方式就是Markdown。目前,很多大型博客網(wǎng)站都開始支持使用Markdown寫文章,這無疑是對程序員的一種示好行為,著名的代碼托管網(wǎng)站GitHub也支持使用Markdown語法來編輯README文件等,如圖所示。
關于Markdown的編輯器,目前市面上也有很多選擇,主要有Mou、MacDown、Typed和Bear等,還有很多在線的Markdown編輯器,在后面的在線工具章節(jié)中會詳細介紹。
還需要提及的一點是,其實使用哪種Markdown編輯器并不很重要,重要的是程序員應該掌握常用的Markdown語法。這樣寫出來的文章或者文檔,可以在任意支持MD語法的平臺上查看。
前面介紹過Java開發(fā)常用的IDE,但是在某些情況下我們僅需要打開一個單獨的文本文件,比如打開一個XML格式的文件、一個JSON格式的文件等,這時一款好用的文本編輯器就派上用場了。
SublimeText是一款流行的代碼編輯器軟件,可運行在Linux、Windows和Mac OS X等操作系統(tǒng)之上,是許多程序員喜歡使用的一款文本編輯器軟件。它具有代碼高亮、語法提示、自動完成且反映快速的編輯器軟件,不僅界面華麗,還支持插件擴展機制,如圖所示。
Atom是GitHub專門為程序員推出的跨平臺的文本編輯器,因為有簡潔、直觀的圖形界面而受到了廣大程序員的青睞,而且它有很多有趣的特點:支持CSS、HTML、JavaScript等網(wǎng)頁編程語言;支持宏,自動完成分屏功能,集成了文件管理器;支持Mac OS、Windows和Linux操作系統(tǒng),支持Node.js所寫的插件,并內置由GitHub提供的Git版本控制系統(tǒng)。多數(shù)的延伸包皆為開放源代碼授權,并由社區(qū)建置與維護。
Notepad++也是一套被廣大程序員選用的純文本編輯器,基于同樣開放源碼的Scintilla文本編輯組件研發(fā)而成,整個項目起初被托管于SourceForge.net,曾經(jīng)兩度獲得SourceForge社區(qū)選擇獎——最佳開發(fā)工具。Notepad++在2010年6月被托管于TuxFamily,現(xiàn)被托管于GitHub。
除了以上介紹的一些必備軟件,還有些常用工具也是程序員在日常工作中必不可少的,例如Host綁定、HTTP調試等。
1. Host綁定
在日常開發(fā)工作中,我們對Host綁定肯定不陌生,因為我們幾乎每天都要和它打交道。我們可能經(jīng)常要在不同的Host綁定之間來回切換,尤其是在Java Web開發(fā)中,在本地開發(fā)測試時可能使用的是一套Host綁定,在測試環(huán)境部署之后提交給測試人員進行測試時又要使用另一套Host綁定。在測試之后,要經(jīng)歷預發(fā)布、灰度發(fā)布等,都需要一套新的Host綁定。采用好用的Host綁定工具可以大大節(jié)省Host綁定切換的時間。
SwitchHosts是一個非常方便、快捷的Host綁定切換工具,免費、開源,支持預發(fā)高亮、方案多選、單擊行號快速切換注釋、系統(tǒng)菜單欄快捷切換、方案導入導出等功能。
2.HTTP調試
在日常的Web開發(fā)中,我們除了會和Host綁定打交道,還經(jīng)常會和RESTful API打交道,有時我們需要一個工具來幫我們發(fā)送HTTP請求,或者說是模擬HTTP請求,比如幫我們發(fā)送POST請求等,這時就需要一款可以模擬發(fā)送HTTP請求的工具。
Postman是Google開發(fā)的一款功能強大的網(wǎng)頁調試與發(fā)送網(wǎng)頁HTTP請求,并能運行測試用例的Chrome插件。除插件外,也提供軟件下載。它可以模擬各種HTTP請求,從常用的GET、POST到RESTful的PUT、DELETE等,甚至可以發(fā)送文件及額外的Header等。Postman可以將Response內容的格式自動美化,將JSON、XML或者HTML都整理成我們可以閱讀的格式。Postman還支持編寫測試腳本,可以快速檢查Request結果,并返回測試結果??傊?,Postman是一款非常不錯的可以用來做HTTP調試的軟件。
▌《程序員的三門課:技術精進、架構修煉、管理探秘》
于君澤 李偉山 張洪亮 彭首長 劉朋 著
我們都有一個共同的夢想——成為更棒的程序員,但是如何做?如何學習和精進自己的技術?如何做業(yè)務分析和架構設計?如何做技術管理?本書就廣大程序員都很關注的問題提供一些思路和方法。
? 本書內容分為三大篇
第1篇介紹程序員的技能成長路徑,介紹如何通過學習來加速成長,并講解非常重要的業(yè)務分析和設計知識;
第2篇詳細介紹了架構修煉中的必備架構思維模式、架構設計過程,還通過真實案例剖析了架構設計的核心要素及關注點,以及如何通過架構設計來把控質量和風險;
第3篇總結了做技術管理的訣竅,揭秘如何從準備做技術管理到實現(xiàn)自我管理再到實現(xiàn)團隊管理。
? 作者簡介
于君澤
某互聯(lián)網(wǎng)公司技術專家,在分布式系統(tǒng)架構設計、高并發(fā)系統(tǒng)設計、領域建模、研發(fā)管理、內建質量等方面有較多心得,樂于交流和分享,曾創(chuàng)立技術社群“中生代技術”。維護技術公眾號“技術瑣話”。
李偉山
現(xiàn)任某人工智能公司技術總監(jiān),江湖人稱“山哥”,在分布式系統(tǒng)架構設計、高并發(fā)系統(tǒng)設計、系統(tǒng)穩(wěn)定性保障等方面積累了豐富的實踐經(jīng)驗,擅于利用數(shù)據(jù)分析解決實際問題,對新技術有濃厚的興趣,樂于分享。個人技術公眾號:技術方舟。
張洪亮
網(wǎng)名Hollis,知名技術博主,個人技術博客(http://www.hollischuang.com) 閱讀量達數(shù)百萬。90后程序員,2015年畢業(yè)于哈爾濱理工大學,現(xiàn)任某互聯(lián)網(wǎng)公司技術專家,專注于Java研發(fā)、技術架構及程序員的成長等方面。個人技術公眾號:Hollis。
彭首長
熊貓優(yōu)福聯(lián)合創(chuàng)始人,聚美優(yōu)品前技術總監(jiān)。在團隊管理、領域設計、分布式架構、高并發(fā)設計、IoT架構等方面有豐富的實踐經(jīng)驗,擅長行業(yè)分析,對新技術高度敏感,熱衷于技術實踐且樂于分享。
劉朋
高績效團隊教練,教練型領導,中生代技術社區(qū)聯(lián)合創(chuàng)始人,北京大學理學學士、工學碩士?,F(xiàn)就職于中國移動(成都)5G產(chǎn)業(yè)研究院,曾任諾基亞通信(成都)有限公司研發(fā)經(jīng)理。在敏捷實踐、高績效團隊教練技術、技術團隊管理等方面積累了豐富的經(jīng)驗,并總結出一套特別適合程序員突破自身瓶頸、快速成長的領導力模式。
(正文已結束)
推薦閱讀:蘋果xr和x哪個好
免責聲明及提醒:此文內容為本網(wǎng)所轉載企業(yè)宣傳資訊,該相關信息僅為宣傳及傳遞更多信息之目的,不代表本網(wǎng)站觀點,文章真實性請瀏覽者慎重核實!任何投資加盟均有風險,提醒廣大民眾投資需謹慎!