# コーディング規約（本研修用）

本研修の題材で使う最小限の規約です。Claude Code への依頼にそのまま添えられる粒度にしてあります。

## 共通（課題A・課題B）

- コメントは日本語、変数名・メソッド名は英語で書きます
- マジックナンバーは名前付き定数にします（例: 在庫しきい値の 5）
- 1メソッドは50行以内を目安にし、超えたら分割を検討します
- 早期リターンで深いネストを避けます
- 使っていない import・変数は残しません

## 課題B（Java / Spring Boot）

### 構造

- パッケージは com.example.equipment 配下に置きます
- レイヤーは controller → service（interface + Impl）→ repository → model を守ります
- 画面表示用の整形（日付フォーマットなど）はサービス層に置き、テンプレートに複雑な式を書きません

### 命名

- クラス名はパスカルケース（EquipmentController）
- メソッド名・変数名はキャメルケース（findById、lowStockFlags）
- 定数は大文字スネークケース（LOW_STOCK_THRESHOLD）

### null と例外

- null になり得る値は、使う前に必ず null チェックをします
- 「見つからない」はエラー画面に落とさず、利用者にわかる表示へ変換します
- 例外を握りつぶしません（catch して何もしない、を書かない）

### 日付

- 画面表示の日付フォーマットはアプリ内で1種類に統一します（本題材では yyyy/MM/dd）
- フォーマッタは定数として1箇所で定義し、使い回します

### テスト

- 修正したバグには、同じバグを二度通さないテストを残すのが理想です（時間があれば）
- テストクラス名は対象クラス名 + Test とします
