懶惰程序員的百寶箱:提升工作效率的七大神器

管理員賬號

2019-10-09

Perl之父Larry Wall曾在 Programming Perl 一書中提到:

程序員的三個美德是懶惰、不耐煩和傲慢。

懶惰,是程序員美德的第一要素。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。

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

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產業研究院,曾任諾基亞通信(成都)有限公司研發經理。在敏捷實踐、高績效團隊教練技術、技術團隊管理等方面積累了豐富的經驗,并總結出一套特別適合程序員突破自身瓶頸、快速成長的領導力模式。

讀者評論

相關專題

相關博文

  • (三)spring cloud云服務架構代碼結構詳細講解

    Omaye 2017-11-28

    上一篇我們介紹了spring cloud云服務架構 - particle云架構代碼結構,簡單的按照幾個大的部分去構建代碼模塊,讓我們來回顧一下: 第一部分: 針對于普通服務的基礎框架封裝(entity、dao、service、co...

    Omaye 2017-11-28
    646 1 4 4
  • Spring Cloud構建微服務架構—配置中心

    醜人 2017-11-17

    Spring Cloud Config是Spring Cloud團隊創建的一個全新項目,用來為分布式系統中的基礎設施和微服務應用提供集中化的外部配置支持,它分為服務端與客戶端兩個部分。其中服務端也稱為分布式配置中心,它是一個獨立的微服務...

    醜人 2017-11-17
    267 2 2 2
  •  Spring Cloud構建微服務架構—服務容錯保護(Hystrix服務降級)

    Spring Cloud構建微服務架構—服務容錯保護(Hystrix服務降級)

    醜人 2017-11-17

    在開始使用Spring Cloud Hystrix實現斷路器之前,我們先拿之前實現的一些內容作為基礎,其中包括: eureka-server工程:服務注冊中心,端口:1001 eureka-client工程:服務提供者,兩個實例啟動...

    醜人 2017-11-17
    182 2 2 2
0k000澳客网竞彩