2015年1月19日 星期一

Golang最好的IDE goclipse 與gvp/gpm整合

最近開始在研究Go語言,主要是原本使用的Python語言在專案的開發上,有許多語言或是框架上本身的限制,造成我們必需用相對複雜的做法去處理專案所面臨的問題。但所有Script都有類似的問題,包括PHP或是Ruby,雖然寫Ruby比較潮,但我們還是需要一個編譯式的語言來解決專案開發上的問題。

要使用新的程式語言,自然要找一個稱手的IDE來用。一開始我看上的是LiteIDE這個新的編輯器。標榜專門為Go語言設計。試了一陣子後,發現這個編輯器雖然有一些優點,包括起動快速,可以跨平台編譯等等,但是最重要的,沒有專案管理的概念,也沒有在編輯器本身整合版本管理系統。沒有專案管理的功能是很致命的,若我開發了超過一個以上的專案,沒有辦法在這些專案中切換,必需要頻繁的開啟關閉資料夾,並更改設定檔我想是不行的。
第二個嘗試是傳說中大神都在用的編輯器,vim。從高中接觸FreeBSD開始,vi/vim就是我一直避免去接觸的編輯器,因為這學習曲線實在太高了,對我這種小菜菜來說,雖說嘗試著把功能都灌起來也可以正常work了,還是找個適合我這種水準的編輯器為佳,但有空時應該再花點時間來學習一下。
中間也看了sublime text之類的軟件,但我還是希望能找到一個全免費的編輯器。最後,我選擇了Eclipse+goclipse。理由如下:

  1. goclipse整合了gdb除錯
  2. Eclipse本身有插件Egit
但坑爹的Go語言本身的環境變數是一個很大的問題,以我認為最佳的實作方式應該是一個專案有一份3rd的函式庫,避免掉版本相依的問題,但原生的go工具並沒有很好的實踐。所以各種管理go path與套件相依性的套件如雨後春筍般的冒出。其中我覺得最好的之一為gvpgpm
gvp像是Python下的virtualenv,可以透過這個Script去改變go path,並且將第三方套件放在指定目錄下的.godeps中。不過原本的版本並沒有像virtualenv一樣有env的提示符,有時在多終端機作業下怕出錯,所以我fork了一個版本方便自己使用。
gpm有點像是python pip,只要在package folder定義一個Godep的檔案,就可以透過gpm指令去安裝指定的lib版本,避免掉相依性的問題。
本來也想嘗試一下goenv或是godep之類的版本管理工具,但godep還必需把相依的套件都commit到版控上,和同事的使用習慣可能不符。
我現在建議的開新專案做法如下:
  1. 建立專案資料夾A
  2. 進入A資料夾下使用source gvp
  3. 進入A/src mkdir <專案>
  4. 在goclipse中加入專案資料夾
  5. 專案資料夾進git
理由是如果直接透過goclipse建立專案會包含bin,pkg,src資料夾,除src外不需進git,而Eclipse無法只對src做git操作。這是我覺得目前最佳的實踐方式。

沒有留言:

張貼留言