Go 筆記之 Go 的那些 IDE

經過前面的一系列工作後,GO的語言環境已經搭建完成。我們也初步體驗了GO提供的大部分命令。但在正式進入開發之前,還有件工作要做,那就是選擇一款適合自己的IDE。

爲什麼使用IDE

"程序員爲什麼要使用IDE",在一些社區論壇,經常可以看到這樣的提問。關於是否應該使用IDE,每個人都有着自己的看法。

早期,程序的開發並不需要IDE,那是以機器碼編程爲主的時代。後來隨着計算機行業發展,爲了進一步提升工程開發效率,IDE就產生了。

要明白的是,IDE主要是通過把各類命令工具集整合起來,開發的一套易於程序開發的軟件,通常它幫我們形成一套高效的編程開發習慣。最終目標是爲了提升項目的開發效率。

瞭解了IDE的本質,如果喜歡折騰,我們完全可以把諸如vim或emacs等文本編輯器打造一款屬於自己的IDE。

支持哪些功能

無論用的是市面上已有的IDE,還是vim純手動打造的IDE,都離不開一個話題:IDE涉及的功能有哪些?文本編輯的能力就不必介紹了,它是最基本的功能。

快捷鍵

雙手不離鍵盤是高效開發中非常重要的一點,要做到它,我們就需要依賴功能強大的快捷鍵。IDE通常都有一套獨有的快捷鍵規範。當習慣了一款IDE,快捷鍵或許是大家輕易不願更換IDE的重要原因之一。

代碼高亮

代碼高亮主要涉及變量、函數定義、類、常量、特殊符號、關鍵詞等。代碼高亮可以提高代碼閱讀體驗,對不同語法採用不同的配色方案,也可降低代碼錯誤的發生機率。而且,IDE一般都支持自定義配色,可以由個人愛好自由設置。

代碼格式化

爲了方便團隊開發,在項目開發前,通常都會制定統一的代碼規範。制定好的規範需要遵從,而IDE一般都支持代碼的格式化功能,幫我們更方便地實現目標。需要說明的是,不同於GO,很多編程語言並沒有類似gofmt的命令,代碼規範也是多樣。

代碼提示

IDE的代碼提示能根據輸入快速給出一系列的建議列表,比如參數信息、成員列表、代碼片段等。爲了給出更精準的提示,一些IDE可能甚至會分析用戶歷史的操作記錄。感覺這儼然已經是一個小型的推薦系統了。

導航跳轉

大型項目的代碼量通常較大,涉及文件也較多。在開發時,我們經常需要在變量、函數、類等代碼間跳轉。最不便利的方式,我們可以通過鍵盤方向鍵或鼠標實現切換。IDE通常都實現了在變量、類型定義、函數定義、文件之間快速跳轉的方法。

代碼調試

多數情況下,通過打印函數就可以實現代碼調試。但通過系統化工具提供的調試功能,我們就能應付各種複雜的場景。調試工具通常支持各種斷點調試能力、變量觀察等功能。

構建編譯

Linux下最常用的構建工具應該是Makefile,之前開發C/C++用的便是make。但有些語言項目用它構建會很複雜,比如Java。IDE的構建編譯功能可以快捷地生成目標文件。編譯功能通常使用的是語言自帶編譯器,比如GO用 go build 命令。

其他功能

當然,除上面介紹的這些,IDE可能還有很多其他能力,比如代碼重構、文件歷史記錄、語言環境管理、數據庫管理等。只要是能想到的功能,基本都可集成進來,現在的IDE儼然已經完全超出了傳統IDE的範疇。

GO有哪些IDE

2019年,GO的發展已有十年之久。在這期間出現了很多能被GO語言使用的IDE,把它們都詳細介紹一遍是不現實的。接下來,重點介紹我比較瞭解幾款IDE。

Goland

Goland,商業公司jetbrains 近兩年推出的 Go 集成開發環境,它真的是無比強大。

我相信很多程序都用過他們家的IDE,比如Java的 Intellj IDEA、PHP的PHPStorm、Python的PyCharm、C++的CLion、前端的WebStorm等。使用JetBrains的IDE,我們可以享受到它優秀的開箱即用的體驗和 jetbrains 積累十幾年的插件體系。

前些年,也就是Goland發佈之前,如果我們希望用jetbrain的IDE進行GO的開發,需要通過它提供的插件支持。Goland發佈後,這些插件似乎已經下架了。

不得不承認,Goland的功能層面做的確實非常完美。不過有幾點我想吐槽一下,首先必須要提的是,Jetbrians的IDE基本都存在着卡頓的毛病,資源消耗比較嚴重。雖然一些大牛提供了優化方案,但體驗下來,和其他IDE依然沒有相比。

Goland的開箱即用,使它的問題很少,確實沒有多少可介紹的,裝起來基本就可以開幹!

VS Code

由微軟開發的一款功能強大的現代化輕量級代碼編輯器IDE,免費開源。通過它強大的插件擴展能力,VS Code幾乎支持主流語言的項目開發。毫無例外,GO也是其中之一。

我之所以嘗試VS Code,並非所謂的極客思維,喜歡瞎折騰。而是因爲jetbrains的IDE經常會卡的心痛,而且自己經常會在不同語言間切換。一次啓動多款Jetbrains的IDE,這是很痛苦的。

爲VS Code加入GO的開發能力,只需安裝一款插件即可,插件地址。安裝時,可能遇到一些問題,常見的就是,在安裝一些依賴包時會出現網絡下載失敗。關於原因就不說了,大家都明白。不過,問題還是要解決的。

舉個具體的例子吧!在GO插件時,我們會通過go get golang.org/x/tools/xxx安裝某個包,這時候大概率出現網絡連接錯誤。我們可以通從github找到對應的倉庫,golang/tools,然後使用git命令下載後,放在GOPATH指定的目錄下,然後再安裝即可。

最後,插個題外話,VS Code使用的是Electron開發的,Electron是用HTML,CSS和JavaScript來構建跨平臺桌面應用程序的一個開源庫,NodeJS與Chromium的結合。因此,利用瀏覽器的特性,利用VS Code,我們能實現很多奇葩的插件,例如下面這些插件。

GitHub Daily:裝上這幾個 VSCode 插件後,上班划水摸魚不是夢

Vim GO

細究起來,vim應該是一款文本編輯器,但它卻擁有了很多不該屬於文本編輯器的能力,比如單詞補全、ctags標籤跳轉、窗口分隔、崩潰文件恢復、文件diff、400多種文本高亮等。最重要的一點是,vim有一套自己的腳本語言,這爲它通過插件擴展自己的能力提供了可能。

將vim擴展成一款適合自己使用的GO IDE,不僅要編寫許多複雜的配置與腳本,還需要各種插件的相互配合,才能實現我們的目標。比如前面介紹的那些IDE的常見功能,在vim中都要逐一配置實現。

GO的vim環境搭建,需要用到一款非常重要的插件,vim-go。它由國外開發者提供,youtube上還有他的分享視頻,有興趣可以去看看。vim-go提供了諸如代碼的編譯、執行、測試、代碼重構、錯誤提示等各種功能,具體瞭解可查看 vim-go教程

說明一點,雖然vim支持插件擴展,但它要集成出VS Code的體驗還是非常困難的。我是不太清楚是否有這種可能,不過即使能實現,也是困難重重。當前,我正嘗試用vim配置GO開發環境,效果圖如下,一些功能還不完善。等成熟後,可以寫篇文章,從簡到深地給大家介紹下。

當前我用的主要就是這三款IDE,Goland主要在工作中使用,而VSC和vim在平時使用。當然,還有很多其他IDE,下面也簡單介紹下,但因爲沒怎麼使用過,所以很難有經驗之談了。

Sublime Text

最初用VS Code,感覺它的使用習慣和Sublime相似。但說到Sublime,都說它是強大文本編輯器,而它的編碼能力也是插件擴展來的。GoSublime就是爲Sublime擴展GO功能的插件。

LiteIDE
一款輕量級的IDE,聽說是由中國人開發的。可能在Goland出現之前比較流行。也或許是自己孤陋寡聞,不知道現在還有多少人在用。

Eclipse
開源的IDE,盛行了多年,有着豐富的資源和粉絲人羣,應該是Java開發最喜歡的IDE吧。GoEclise是Eclipse針對Goland的插件。從github瞭解到,這個項目好像很久沒有更新了。

Atom
與VS Code一樣,都是基於Node-Webkit,即Electron,開發的。是由github開源的文本編輯器。go-plus是Atom針對Golang開發的插件

總結

本篇文章從爲什麼要使用IDE談起,介紹了IDE的一些發展史。同時,總結了一款基本的IDE通常都會提供哪些功能。只要瞭解了這些,可以幫助我們以後更好地使用它們。最後,介紹了現在市面上流行的幾款IDE,並在我力所能及的範圍內分析了它們各自的優劣。

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