golang實際總結(1) ——golang項目結構(模塊拆分)

1、參考

golang學習系列目錄——更新ingjava

如何寫出優雅的 Golang 代碼python

2、目錄結構

2.1 pkg

存放本項目中,能夠被外部應用直接調用的代碼庫git

即通常/pkg中存放的是公有庫github

2.2 internal

私有代碼存放在internal中,golang

2.3 src

不建議使用 src存放項目,web

(1) go語言的項目默認都會在 $GOPATH/src目錄下,若是當前的項目中還有src目錄,則有django

$GOPATH/src/github.com/test/project/src/code.gosegmentfault

這樣的目錄,看起來很是奇怪api

(2) src目錄是大多數 Java使用者的開發經驗架構

2.4 平鋪

(1) 對於框架或者庫,將代碼平鋪在項目根目錄下很正常,

例如:

若是沒有平鋪,想要引入一個使用 pkg目錄結構的框架時候,須要使用

github.com/test/project/pkg/somepkg

若是將全部代碼平鋪到根目錄,則引用路徑爲

github.com/test/project/pkg/somepkg

(2) 對於一個go服務中,使用平鋪方式不是很是合適

2.5 cmd

存放全部的可執行文件

該目錄下的每個子目錄,都包含了可執行文件

不該該將過多的代碼放入,cmd中

2.6 api

存放當前項目,對外提供的全部api接口文件

api目錄下可能包含有二級目錄,例如:

api/protobuf-spec

api/thrift-spec

api/http-spec

2.7 Makefile

目錄 scripts中存放一些項目運行的腳本

經過 Makefile 調用這些腳本

3、模塊拆分

3.1 按層拆分(java等)

web框架的常見架構方式爲 MVC 分層,即將服務中的不一樣組件分爲

Model, View, Control 三層

下面是一個常見的python django項目結構

image.png

按層拆分的好處是:

(1) 強調了按層劃分職責

(2) 扁平的命名空間

(3) 單體服務的場景

3.2 按職責拆分(go項目)

divide-by-responsibility

相關文章
相關標籤/搜索