メインコンテンツまでスキップ

状態が壊れる

Scope

対象は、ソフトウェア内で管理される状態について、 一貫した遷移として把握できない状況が観測されている状態である。

Definition

状態が壊れるとは、本来明示的に定義されるべき状態遷移が部分的に欠落し、 現在の状態や次に起こり得る遷移を特定できない状況が観測される状態を指す。

Symptoms(現れ方)

  • 状態遷移の条件がコード上に分散し、全体像を単一の形で把握できない状態が観測される
  • フラグや一時変数が増殖し、組み合わせによって状態が決定される前提が成立している
  • 表示されている内容と内部状態が一致しない状態が継続して観測される
  • 想定されていない状態から処理が継続されている状況が観測される

Typical Triggers

  • 画面や機能の追加に伴い、既存の状態定義が部分的に拡張された状態が継続している
  • 一時的な分岐や例外対応が恒久化している状況が観測される
  • 状態の正の所在が定義されないまま、参照・更新箇所が増えている状況が観測される
  • 非同期処理やイベント駆動により、遷移の順序が暗黙化している状況が観測される

Diagnostic Questions(見分けるための問い)

  • 現在の状態を、単一の表現として説明できる状態か
  • 次に起こり得る状態遷移を列挙できる状態か
  • 表示と内部状態の不整合を検知できる状態か
  • 想定外の状態が存在しないと断言できる状態か

What This Is Not

  • 特定の状態管理ライブラリの選定問題ではない
  • UI フレームワークの使い方の是非を論じるものではない
  • 単純な条件分岐の多さそのものを指すものではない

Connections