プロジェクト

全般

プロフィール

リファクタ #457

完了

skin property: SkinProperty の id 定数をカテゴリ別に整理する(Phase 3)

リファクタ #457: skin property: SkinProperty の id 定数をカテゴリ別に整理する(Phase 3)

エージェント ちゃん さんが8日前に追加. 8日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/07/01
期日:
2026/07/01
進捗率:

100%

予定工数:

説明

#176 の整理方針に基づく Phase 3。最後に着手する(他フェーズと独立しても可)。

背景

SkinProperty.java(1081 行)は IMAGE / TIMER / NUMBER / OPTION / STRING / EVENT / BUTTON / SLIDER / GRAPH などの public static final int 定数がフラットに並ぶ名前空間で、見通しが悪い。この id 群は JSON name→id アンカー / LR2 数値 op 契約 / Lua から参照されるため、値と import static SkinProperty.* の公開面は一切変えられない

対応内容

  • 定数をカテゴリ(Timer / Number / Option / String / Event 等)ごとにグループ化し、コメント区切り・並び順の整理、もしくはドメイン別 partial 定数インターフェースへの分割を検討する。
  • 値は一切変えずimport static SkinProperty.* で参照している既存コードがそのままコンパイルできることを保証する。

確認観点

  • id 値の重複(エイリアス互換)を保持し、リナンバー・削除は行わない。
  • Phase 0 のゴールデン契約テストを green に保つ。
  • 定数の整理のみで振る舞いを変えない。

関連するチケット 2 (0件未完了2件完了)

関連している beatoraja - リファクタ #176: skin property 定義群の肥大化を整理する方針を作る完了いづ さん2026/06/11

操作
次のチケットに後続 beatoraja - リファクタ #456: skin property: Factory の id/name 解決を汎用 PropertyRegistry に共通化する(Phase 2)完了いづ さん2026/06/302026/06/30

操作

エージェント ちゃん さんが8日前に更新 操作 #1

  • 関連している リファクタ #176: skin property 定義群の肥大化を整理する方針を作る を追加

エージェント ちゃん さんが8日前に更新 操作 #2

  • 期日2026/07/01 にセット
  • 開始日2026/06/28 から 2026/07/01 に変更
  • 次のチケットに後続 リファクタ #456: skin property: Factory の id/name 解決を汎用 PropertyRegistry に共通化する(Phase 2) を追加

エージェント ちゃん さんが8日前に更新 操作 #3

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

実装に着手しました。

  • ブランチ: feature/457
  • 対応方針: SkinProperty の定数群を値・公開面・振る舞いを一切変えずカテゴリ別 partial 定数インターフェース(<Category>Ids)へ分割し、SkinPropertyimplements で集約する。

エージェント ちゃん さんが8日前に更新 操作 #4

  • ステータス実装中 から 完了 に変更
  • 進捗率10 から 100 に変更

対応が完了しました。

概要

SkinProperty.java(980 個のフラットな public static final int 定数)をカテゴリ別の partial 定数インターフェース 13 個へ分割し、見通しを改善した純リファクタ(#176 方針の Phase 3)。値・名前・公開面・振る舞いは一切変更なし。

変更点

  • 定数をプレフィックス単位で 13 インターフェースへ抽出(新規): ImageIds(5) / TimerIds(152) / SliderIds(8) / BarGraphIds(22) / StringIds(50) / NumberIds(272) / RateIds(30) / FloatIds(48) / ValueIds(16) / OptionIds(287) / OffsetIds(16) / ButtonIds(72) / EventIds(2) =合計 980
  • SkinProperty は全 13 インターフェースを implements する空クラスに変更。定数は継承メンバーとして残るため import static SkinProperty.* / SkinProperty.X 参照は無改変でコンパイル可能
  • カテゴリ内の並び順・特殊コメントも保持。参照側コードは一切変更なし
  • 変更ファイル: src/bms/player/beatoraja/skin/SkinProperty.java ほか新規インターフェース 13 件(計 14 ファイル)

検証

  • 改変前後の NAME=VALUE 集合が byte 一致(980 件)・名前重複ゼロを機械検証済み

テスト

  • .\gradlew.bat test : 成功(BUILD SUCCESSFUL。Phase 0 ゴールデン契約テスト DefaultSkinPropertyContractTest 含む全テスト green)
  • .\gradlew.bat compileJava : 成功(全 importer が無改変でコンパイル可能)

関連 MR

  • !131 (feature/457 → develop)

他の形式にエクスポート: PDF Atom