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確認)
  • [ ] 空インターフェースの使用が最小限

デザインパターン

  • [ ] パターンの目的が理解されている
  • [ ] 過度な抽象化を避けている
  • [ ] テスト可能な設計になっている
  • ---

    フィードバックのポイント

  • インターフェースの粒度: 大きすぎないか確認
  • 依存性の方向: 具象→抽象の依存になっているか
  • テスト容易性: モックが作りやすい設計か