Day 3: インターフェース - 評価基準
評価項目
チャレンジ1: プラグインシステム(25点)
| 項目 | 配点 | 評価基準 |
|---|---|---|
| Logger定義 | 5点 | Info, Error, Debugメソッドが定義されている |
| ConsoleLogger | 5点 | 正しく標準出力に出力される |
| TimestampLogger | 10点 | デコレータパターンが正しく実装されている |
| App統合 | 5点 | Loggerインターフェースを使用している |
ボーナス(+5点):
- ログレベル制御を実装している
---
チャレンジ2: データストアの抽象化(30点)
| 項目 | 配点 | 評価基準 |
|---|---|---|
| KVStore定義 | 5点 | Get, Set, Delete, Listが定義されている |
| MemoryStore | 10点 | 正しく動作し、スレッドセーフ |
| CachedStore | 10点 | キャッシュロジックが正しい |
| エラー処理 | 5点 | キー未発見時にエラーを返す |
減点対象:
- データ競合の可能性: -10点
- nilマップへのアクセス: -5点
---
チャレンジ3: 型アサーションの活用(20点)
| 項目 | 配点 | 評価基準 |
|---|---|---|
| 型スイッチ使用 | 5点 | switch v := i.(type)を使用 |
| 基本型処理 | 5点 | string, float64, boolを処理 |
| 配列処理 | 5点 | []interface{}を処理 |
| 再帰処理 | 5点 | ネストしたmapを再帰的に処理 |
---
チャレンジ4: デザインパターンの実装(25点)
| 項目 | 配点 | 評価基準 |
|---|---|---|
| Operation定義 | 5点 | Execute, Nameが定義されている |
| 4つの演算 | 12点 | Add, Subtract, Multiply, Divideが実装 |
| Calculator | 8点 | Strategyパターンが正しく実装されている |
ボーナス(+5点):
- ゼロ除算時のエラー処理を実装している
---
総合評価
| 点数 | 評価 |
|---|---|
| 90-100点 | 優秀 - インターフェースの設計を深く理解している |
| 70-89点 | 良好 - インターフェースを適切に活用できる |
| 50-69点 | 合格 - 基本的なインターフェースは理解している |
| 0-49点 | 要再提出 - インターフェースの基礎を学び直す |
---
コードレビューチェックリスト
インターフェース設計
- [ ] インターフェースが小さく保たれている
- [ ] メソッド名がerで終わっている(1メソッドの場合)
- [ ] ドキュメントコメントが記述されている
実装
- [ ] 暗黙的に実装されている(implements不使用)
- [ ] 型アサーションは安全に行われている(ok確認)
- [ ] 空インターフェースの使用が最小限
デザインパターン
- [ ] パターンの目的が理解されている
- [ ] 過度な抽象化を避けている
- [ ] テスト可能な設計になっている
- インターフェースの粒度: 大きすぎないか確認
- 依存性の方向: 具象→抽象の依存になっているか
- テスト容易性: モックが作りやすい設計か
---