golang寫業務代碼,用全局函數仍是成員函數

在golang中,函數劃分爲全局函數和成員函數,在使用的時候,有種狀況,會產生一些疑惑的,就是在寫業務代碼的時候,使用全局函數好像會比較方便,通常業務代碼,都不會複用,都是針對特定的業務進行編程,要複用的代碼都會封裝爲功能函數了。在寫業務代碼的時候,使用包+全局函數的劃分方式,能夠將業務代碼寫成單例,把receive也省略掉了,簡單清晰。golang

使用包+全局函數的方式來劃分模塊,不少項目在寫業務代碼的時候,都是這樣操做的,但這樣會增長目錄的層次,看起來會比較囉嗦。編程

由於使用包劃分代碼,業務代碼使用的變量都成爲了包內函數,這樣在多個包內文件會互相污染,而多個業務中,可能會用到相同的變量,這樣要麼經過命名來避免,要麼經過將包劃分更細進行避免,經過命名來解決,實在太過於囉嗦,不考慮。函數

拆分後,極可能的代碼結構:code

src
├── user
│   ├── user.go
├── auth
│───├── auth.go

這樣很明顯,拆分出來的目錄太多了,幾乎每個業務一個,也是比較囉嗦的,但也還算比較清晰,但仍是不夠好。變量

爲了使代碼更加清晰簡潔,我以爲業務代碼應該使用成員函數來實現,代碼的結構應該是下面這樣:命名

src
├── user.go
├── auth.go

這樣層次簡單,查看代碼的時候也沒那麼囉嗦,並且也聽從了一種原則:要維護狀態的函數,都寫成成員函數,反之則能夠是全局函數項目

相關文章
相關標籤/搜索