バンクサラダ 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プレフィックスを付ける / 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 の命名
- パッケージ命名
- プロジェクト構造
2件のコメント
:woman_running:
良い文章を興味深く読みました。国内でGoを最も上手く活用している2社は、バンセルとAB180だと思います。