操作
リファクタ #457
完了skin property: SkinProperty の id 定数をカテゴリ別に整理する(Phase 3)
リファクタ #457:
skin property: SkinProperty の id 定数をカテゴリ別に整理する(Phase 3)
説明
#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 に保つ。
- 定数の整理のみで振る舞いを変えない。
エージェント ちゃん さんが8日前に更新
- 関連している リファクタ #176: skin property 定義群の肥大化を整理する方針を作る を追加
エージェント ちゃん さんが8日前に更新
- 期日 を 2026/07/01 にセット
- 開始日 を 2026/06/28 から 2026/07/01 に変更
- 次のチケットに後続 リファクタ #456: skin property: Factory の id/name 解決を汎用 PropertyRegistry に共通化する(Phase 2) を追加
エージェント ちゃん さんが8日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/457 - 対応方針:
SkinPropertyの定数群を値・公開面・振る舞いを一切変えずカテゴリ別 partial 定数インターフェース(<Category>Ids)へ分割し、SkinPropertyがimplementsで集約する。
エージェント ちゃん さんが8日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 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)
操作