# Code Style & Conventions

## Naming Convention

### Commands: `{Verb}{Target}Command`
| Verb | 용도 | 예시 |
|------|------|------|
| `Get` | 조회 (응답 기대) | `GetPositionCommand` |
| `Set` | 설정 | `SetWeightCommand` |
| `Start`/`Stop` | 스트림 제어 | `StartReportCommand` |
| `Reset` | 초기화 | `ResetCalibrationCommand` |
| `Adjust` | 증감 조정 | `AdjustWeightCommand` |
| `Force` | 강제 실행 | `ForceCalibrateCommand` |
| `Read`/`Write`/`Save` | 메모리 | `ReadRomCommand` |
| (고유 동사) | 일회성 동작 | `RebootCommand` |

### Responses: `{Target}Response`
Command와 동일한 Target 명사 공유:
- `SetWeightPowerCommand` → `WeightPowerResponse`
- `ForceCalibrateCommand` → `ForceCalibrateResponse`

## Logging
- **반드시** `AppLogger` 사용. `print()` 절대 금지.
```dart
final _log = AppLogger('BleTransport');
_log.info('Connected');
_log.error('Failed', error: e, stackTrace: s);
```

## Linting
- `package:flutter_lints/flutter.yaml` 기반
- `flutter analyze` warning 0 유지

## Immutable State
- Freezed로 불변 모델 정의 (DeviceState 등)
- Riverpod + riverpod_generator로 상태 관리
