뱅크샐러드 Go 코딩 컨벤션
(blog.banksalad.com)- 뱅크샐러드팀이 4년간 Go를 활발히 사용하며 다양한 실수와 시행착오를 겪으며 정해나간 코딩 컨벤션
읽어두면 좋은 자료
한 번 읽어보길 권장하는 여러 컨벤션 가이드와 best practices 자료
-
The Zen of Go
- 각 구절의 상세한 설명: The Zen of Go | Dave Cheney
- 한국어 번역 Go의 철학 | marsettler.com
- Go Proverbs
- Effective Go | go.dev
- CodeReviewComments · golang/go Wiki | GitHub
- Practical Go | Dave Cheney
- Thanos 팀 스타일 가이드(한국어, 원문)
- Uber 팀 스타일 가이드(한국어, 원문)
- Ashley McNamara + Brian Ketelsen. Go best practices | YouTube
- Idiomatic Go | Sourcegraph
- Go Style Best Practices | Google
코딩 프랙티스
- Don't panic
- Panic을 낼 수 있는 함수는 must prefix 붙이기 / Panic vs Fatal
- Panic safe goroutine / Concurrent safe한 결과 모으기
- Error stacking / Error handling / Error logging
- No named return
- HTTP client 설정 / HTTP connection 재사용
- Slice 선언 시 len, cap 설정 / Nil slice vs Empty slice
- Bool map과 struct{} map / Map 조회 시 ok 체크 / Avoid map loop
- 문자열 loop 시 range 사용 / 문자열 길이
-
context.TODO()
보다context.Background()
사용 - Early return 애용
-
time.Duration
사용 / 타임존 - 테이블 기반 테스트 / No monkey patch / Deterministic test
- Avoid reflect
- Functional options
코딩 스타일
서술된 내용은 뱅크샐러드 팀의 스타일로 각 항목은 그대로 따르기보단 각 조직에 맞게 고려하길 권장
- 함수의 인자 순서
- 테스트 함수 네이밍
- 파일 내 선언 순서
- import 순서
- 단수는 get 복수는 list
- 모호한 단어 피하기
- const 네이밍
- 패키지 네이밍
- 프로젝트 구조