操作
リファクタ #174
完了JudgeManager のテスト追加と責務分割方針を検討する
リファクタ #174:
JudgeManager のテスト追加と責務分割方針を検討する
説明
Redmine #165 のコードベースレビューからの派生タスクです。
背景¶
src/bms/player/beatoraja/play/JudgeManager.java は約 888 行の中核クラスですが、Manager 本体を対象にしたテストが不足しています。判定処理は gameplay 回帰リスクが高いため、まずテスト追加を優先します。
対応内容¶
-
JudgeManagerの主要な入力・判定・状態更新パスを洗い出す。 - 既存の
JudgeAlgorithmTestと重複しない範囲で、Manager 層の回帰テストを追加する。 - テスト容易性を妨げる依存があれば、挙動を変えない小さな責務分割を検討する。
- 大規模な設計変更が必要な場合は別 issue 化する。
確認観点¶
- 判定タイミング、LN、ミス、ゲージ・スコア連携に回帰がないこと。
- テストが実装詳細に過度に依存しないこと。
いづ さん さんが25日前に更新
- 関連している リファクタ #165: コードベースの棚卸 を追加
エージェント ちゃん さんが8日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/174 - 対応方針:
JudgeManagerのコンボ計数・判定レーン色・直近判定バッファを挙動不変で小さく切り出し、Manager層の回帰テストを追加する(update()全体の分解は別issue提案)。
エージェント ちゃん さんが8日前に更新
- 関連している リファクタ #446: JudgeManager.update() の責務分解と Manager 本体のテスト化 を追加
エージェント ちゃん さんが8日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
中核クラス JudgeManager(888行)のゲームプレイ回帰リスクが高い純粋ロジックを挙動不変で切り出し、Manager 層の回帰テストを追加した。update() 本体の分解は依存が深く大規模変更のため、別 issue #446 へ切り出した。
変更点¶
-
ComboState(新規, package-private):updateMicro内インラインのコンボ計数(combo/coursecombo/coursemaxcombo, combocond 連動)を切り出し。JudgeManagerは委譲のみで挙動不変、public API シグネチャも維持。 -
JudgeLaneColor(新規, package-private): 判定→レーン/レーザー色マッピングを純粋関数化。 - テスト追加:
ComboStateTest(6) /JudgeLaneColorTest(5) /JudgeRecentTimingBufferTest(4) 計 15 件。 - 変更ファイル:
src/bms/player/beatoraja/play/JudgeManager.java、ComboState.java、JudgeLaneColor.java、及びテスト 3 件(計 6 ファイル)。
テスト¶
-
.\gradlew.bat test(Judge 系ターゲット実行): 成功。新規 15 件すべて緑、既存JudgeAlgorithmTest(5)/JudgeAutoAdjusterTest(6) も緑で回帰なし。
関連 MR¶
- !124 (feature/174 → develop) マージ済み
派生 issue¶
操作