Quy ước lập trình Go của BankSalad
(blog.banksalad.com)- Đội ngũ BankSalad đã sử dụng Go rất tích cực trong 4 năm, và đây là các quy ước lập trình được hình thành qua nhiều lỗi sai và quá trình thử nghiệm khác nhau.
Tài liệu nên đọc trước
Một số tài liệu về quy ước và best practices được khuyến nghị nên đọc qua một lần.
- The Zen of Go
- Giải thích chi tiết từng câu: The Zen of Go | Dave Cheney
- Bản dịch tiếng Hàn Triết lý của Go | marsettler.com
- Go Proverbs
- Effective Go | go.dev
- CodeReviewComments · golang/go Wiki | GitHub
- Practical Go | Dave Cheney
- Hướng dẫn style của đội Thanos (tiếng Hàn, bản gốc)
- Hướng dẫn style của đội Uber (tiếng Hàn, bản gốc)
- Ashley McNamara + Brian Ketelsen. Go best practices | YouTube
- Idiomatic Go | Sourcegraph
- Go Style Best Practices | Google
Thực hành lập trình
- Don't panic
- Với các hàm có thể gây panic thì gắn tiền tố must / Panic vs Fatal
- Goroutine an toàn với panic / Thu thập kết quả an toàn khi concurrent
- Error stacking / Error handling / Error logging
- Không dùng named return
- Cấu hình HTTP client / Tái sử dụng HTTP connection
- Khi khai báo slice thì thiết lập len, cap / Nil slice vs Empty slice
- Bool map và struct{} map / Khi tra cứu map thì kiểm tra ok / Avoid map loop
- Khi lặp qua chuỗi thì dùng range / Độ dài chuỗi
- Dùng
context.Background()thay vìcontext.TODO() - Ưu tiên early return
- Dùng
time.Duration/ Múi giờ - Test dạng bảng / No monkey patch / Deterministic test
- Avoid reflect
- Functional options
Phong cách lập trình
Nội dung được mô tả là phong cách của đội BankSalad; thay vì làm theo nguyên xi từng mục, nên cân nhắc điều chỉnh cho phù hợp với từng tổ chức.
- Thứ tự tham số của hàm
- Cách đặt tên hàm test
- Thứ tự khai báo trong file
- Thứ tự import
- Số ít dùng get, số nhiều dùng list
- Tránh từ ngữ mơ hồ
- Cách đặt tên const
- Cách đặt tên package
- Cấu trúc dự án
2 bình luận
:woman_running:
Bài viết rất hay, tôi đã đọc rất thích. Tôi nghĩ ở Hàn Quốc, hai công ty tận dụng Go tốt nhất là BankSalad và AB180.