jneo8.com

Search

Search IconIcon to open search

golang project architecture-202301071505

Last updated Jan 7, 2023 Edit Source

# golang project architecture-202301071505

# Summary

結構化的 Golang project 設計

# Notes

這是個老議題了, 但最近在網路上看到滿多教學文在講 project setup

還是來分享一下自己目前的理解跟設計

# 專案架構

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.
├── assets
├── bin
├── build
├── CHANGELOG.md
├── cmd
│   ├── demo1
│   │   └── main.go
│   └── demo2
│       └── main.go
├── configs
├── deployment
├── docs
├── entity
├── go.mod
├── go.sum
├── infra
├── Makefile
├── pkg
├── README.md
├── repository
├── scripts
└── usecase

# Entity Layer

# /entity

# Drivers

# /repository

# Usecase Layer

# /usecase

# Interface Adopters Layer

# /cmd

# /api

# Support packages

# /pkg

# Common projects directories

# /config

# /docs

# /infra

# /assets

# /bin

# /Scripts

# /deployments or /deploy

# /build

# /test

# Recap

這是大多數在工作上常用的配置, 好處是因為有依照 clean architecture 去切分 package, 大多數的改動只需要動到單一幾個package. 會讓 PM 產生一種你 code 寫很快的錯覺. 另外要廢言一下怎麼評估自己的 project 切分的好不好

最後要說, 大多數時間 project 都不是完美的架構, 可能需要經過時間跟專案複雜度微調 就像一些實驗性的 project 可能就不會這樣完整 架構也是慢慢發展起來


# References