Skip to content

[codex] reduce command validation duplication#42

Merged
6uclz1 merged 1 commit intomainfrom
codex/reduce-validation-duplication
Feb 22, 2026
Merged

[codex] reduce command validation duplication#42
6uclz1 merged 1 commit intomainfrom
codex/reduce-validation-duplication

Conversation

@6uclz1
Copy link
Owner

@6uclz1 6uclz1 commented Feb 22, 2026

概要

track/synth/effect の各コマンドで、trackdeviceparameter の入力検証や範囲チェックがコマンドごとに重複していました。
この重複により、同じ意味の検証ロジックが複数箇所に散らばり、将来の機能追加時にメッセージ不一致や修正漏れが起きやすい状態でした。

ユーザー影響

今回の変更は外部仕様を変えるものではなく、同じ不正入力に対して同じエラーコード (INVALID_ARGUMENT) と一貫したヒントを返しやすくするための内部改善です。
結果として、CLI 利用者が受け取るエラーメッセージの揺れを抑え、コマンド追加後も挙動の安定性を維持しやすくなります。

根本原因

コマンド実装ごとに require_non_negative(...) と個別の条件分岐が直接書かれており、バリデーションの責務が分散していました。
同じ検証規則(例: track は 0 以上)が複製されたため、修正コストと見落としリスクが増えていました。

対応内容

src/ableton_cli/commands/_validation.py に再利用用のバリデータを追加しました。

  • require_track_index
  • require_device_index
  • require_parameter_index
  • require_float_in_range

あわせて、以下のコマンド実装を共通ヘルパー経由にリファクタしました。

  • src/ableton_cli/commands/track.py
  • src/ableton_cli/commands/synth.py
  • src/ableton_cli/commands/effect.py

これにより、track/device/parameter の検証と value 範囲検証の重複を削減し、単一の変更点から各コマンドへ反映できる構造に寄せています。

テストと検証

TDD として先に検証ユーティリティのテストを追加し、実装後に全チェックを通しています。

追加テスト:

  • tests/commands/test_validation.py

実行したチェック:

  • uv run python -m ableton_cli.dev_checks
  • uv run ruff check .
  • uv run ruff format --check .
  • uv run pytest

いずれも成功しています(pytest: 353 passed)。

@6uclz1 6uclz1 changed the title reduce command validation duplication [codex] reduce command validation duplication Feb 22, 2026
@6uclz1 6uclz1 marked this pull request as ready for review February 22, 2026 17:20
@6uclz1 6uclz1 merged commit 96902cd into main Feb 22, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant