在Go語言領域遨游了幾個月后,發現自己對Go語言相關的工程目錄結構有些不了解,按照原來的習慣在Go工程中建立的目錄結構顯得比較奇怪,好的目錄結構絕對是可以加強工程效率的,所以接下來會參考煎魚、毛大等大佬專案的結構做分析并且改造一個我的半成品專案,
每個專案的目錄結構并不是有規定模板的,也有很多優秀的專案并不是常規的專案布局,還是要依據專案型別、大小及靈活程度做調整,但一定要保證結構清晰!
工程化目錄
/pkg
一般來說作為外部應用程式可以使用的庫代碼,也即可以被其他專案參考的包,在pkg內部可以按照功能分類,所以說根目錄下的pkg檔案夾是作為整個專案的共享包庫使用,
當然在非根目錄的下也可以很好的加入pkg目錄,很多專案會在internal目錄下加入pkg表示內部共享包庫,
/internal
大多數開源專案及官方代碼等代碼倉庫中,我們總會在某個目錄級別見到internal目錄,它表示私有應用程式和庫代碼,也就是你不希望其他專案中匯入的代碼,一般存盤一些比較專屬于當前專案的代碼包,這是在代碼編譯階段就會被限制的,該目錄下的代碼不可被外部訪問到,
internal目錄并不局限在根目錄,在各級子目錄中也可以有internal子目錄,也會同樣起到作用,
/config
config目錄或者configs目錄顧名思義就是組態檔或者組態檔模板所在的檔案夾,
/test
test目錄經常用于存放整個應用的測驗、測驗資料及一些集成測驗等,相較于單元測驗在每個go檔案對應的目錄下,test目錄偏向于整體,當然在某些子專案內也會有區域專案的測驗會放在子專案的test中,
/docs
各類檔案所在目錄,
/third_party
可以放一些第三方的資源工具檔案,
應用
專案地址:https://github.com/Codexiaoyi/tf_server
以上就是一些常見的目錄,還有一些/api、/example、/cmd等等也算是比較常見的目錄,目錄功能也顯而易見,各種型別的專案的目錄結構都不同,我這還是通過一個單體的應用的常用目錄結構進行舉例,

可以看到當前做到一半的專案,根目錄下已經變得奇奇怪怪了,尤其是util檔案夾里面放了各種東西(自己都看不下去了),接下來我們來做改造~
①我們將根目錄結構調整一下

②我們需要將原來的util檔案夾下的jwt組件、log日志組件、oss物件工具放到pkg檔案夾中,并做好與本專案的解耦,
③將原來的util檔案夾下的response和errmsg這些與當前專案強耦合的包放到internal中,
這樣我們的根目錄就變得十分清真,后續可以再加test、docs等等目錄,也不會顯得專案雜亂無章,最后我們來看看新的目錄結構:

通過這篇隨筆可以看出在go專案中有一些“潛規則”,比如剛入門的時候我們不知道各個專案中的internal和pkg檔案夾表示腎么含義,當然還是那句話,專案的目錄結構并沒有一個強制性規范,我們應該不斷看優秀的專案的結構目錄,不斷優化自己的架構意識,使得自己專案的擴展性加大的同時還能保證清晰,
代碼是給人看的!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/288851.html
標籤:其他
上一篇:精盡Spring Boot原始碼分析 - 支持外部 Tomcat 容器的實作
下一篇:python 演算法 一
