golangstyle-01jpcvxfxpsvpepv85myk6s6bg.md•1.61 kB
---
description: 掟プロジェクトにおけるGolangコードのスタイルガイドと規約
ruleId: golangstyle-01jpcvxfxpsvpepv85myk6s6bg
tags: [development, golang, style]
aliases: [golang-style]
globs: ["**/*.go"]
---
# Golangコーディングスタイル
## パッケージ構成
- パッケージ名は小文字で、単一の単語を使用する。
- `internal`パッケージを適切に活用し、公開APIを最小限に抑える。
- サブパッケージは適切な粒度で分割する。
## 命名規則
- インタフェース名は、単一メソッドの場合は「メソッド名 + er」(例:`Reader`, `Writer`)
- 略語は一貫して大文字または小文字で扱う(例:`ID`, `Http`は避けて`HTTP`を使用)
- エクスポートする識別子は必ずドキュメントコメントを付ける。
## エラー処理
- エラーは常に即座に処理する。
- エラーメッセージは小文字で始め、句点を付けない。
- カスタムエラーは`errors.New`または`fmt.Errorf`を使用する。
- 意味のあるエラーラッピングする(`%w`を適切に使用)
## 並行処理
- ゴルーチンのリークを防ぐため、適切なキャンセル処理を実装する。
- チャネルの所有権を明確にする。
- 共有メモリへのアクセスは`sync`パッケージを使用して適切に保護する。
## テスト
- テーブル駆動テストを活用する。
- サブテストを使用して関連するテストをグループ化する。
- ヘルパー関数には`t.Helper()`を付ける。