goft - 評価
課題の目的
この課題の主な学習目標:
- Go言語の基本構文の習得
- UTF-8 エンコーディングの理解
- スライスの深い理解
- テスト駆動開発(TDD)の実践
評価スケール
| 項目 | 配点 | 説明 |
|---|---|---|
| Part 1: 文字判定関数 | 20点 | 9関数の正確な実装 |
| Part 2: 文字列操作関数 | 30点 | 9関数の正確な実装 |
| Part 3: 数値変換関数 | 15点 | 2関数の正確な実装 |
| Part 4: メモリ操作関数 | 20点 | 5関数の正確な実装 |
| コード品質 | 15点 | 可読性、命名規則、ドキュメント |
| **合計** | **100点** | |
| ボーナス | +25点 | ジェネリクス版、イテレータ |
評価ポイント
機能要件チェック
文字判定関数 (各2点)
- [ ]
IsAlpha: ASCII アルファベットを正しく判定 - [ ]
IsDigit: ASCII 数字を正しく判定 - [ ]
IsAlnum: 英数字の組み合わせを正しく判定 - [ ]
IsSpace: 空白文字(スペース、タブ、改行等)を正しく判定 - [ ]
IsPrint: 印字可能文字を正しく判定 - [ ]
IsUpper: 大文字を正しく判定 - [ ]
IsLower: 小文字を正しく判定 - [ ]
ToUpper: 小文字→大文字変換が正確 - [ ]
ToLower: 大文字→小文字変換が正確
文字列操作関数 (各3点)
- [ ]
Strlen: UTF-8 文字列の rune 数を正しくカウント - [ ]
Strchr: 文字が見つかった場合のインデックス、見つからない場合は -1 - [ ]
Strrchr: 末尾からの検索が正確 - [ ]
Strncmp: 負・0・正の返り値が正確 - [ ]
Strdup: 新しいメモリ領域に複製 - [ ]
Substr: 境界条件を正しく処理 - [ ]
Strjoin: 2つの文字列を正しく結合 - [ ]
Strtrim: 両端から指定文字を削除 - [ ]
Split: 区切り文字で正しく分割
数値変換関数 (各7点)
- [ ]
Atoi: 先頭空白、符号、オーバーフローを正しく処理 - [ ]
Itoa: 負数、ゼロ、最大値を正しく変換
メモリ操作関数 (各4点)
- [ ]
Memset: nil チェック、境界チェック - [ ]
Memcpy: nil チェック、正確なコピー - [ ]
Memmove: オーバーラップ時の正確な動作 - [ ]
Memcmp: 比較結果の正確性 - [ ]
Memchr: 検索結果の正確性
非機能要件チェック
コード品質 (15点)
- [ ] 命名規則 (3点): Go の命名規則に準拠
- [ ] コメント (3点): 関数ドキュメントが適切
- [ ] エラーハンドリング (3点): パニックを起こさない
- [ ] コードフォーマット (3点):
gofmtでフォーマット済み - [ ] テストコード (3点): テーブル駆動テストを実装
- UTF-8 処理の誤り (-5点)
よくある減点事項
len(s) をバイト数ではなく文字数として使用
- s[i] で直接 rune にアクセスしようとする- nil ポインタ参照 (-3点)
- 禁止ライブラリの使用 (-全点)
strings, strconv, unicode の使用
- fmt.Sprintf での数値変換- テスト不足 (-5点)
- コードスタイル違反 (-2点)
gofmt 未適用
- 命名規則違反合格基準
- 最低点: 70点以上
- ボーナス考慮: マンダトリー100点満点の場合のみボーナス加算
- 必須条件: 全関数がパニックせずに動作すること