参照透過性の定義 (式をその評価結果で置き換えてもプログラムの動作が変わらない)

定義

**参照透過性の定義 (式をその評価結果で置き換えてもプログラムの動作が変わらない)**とは、式をその評価結果で置き換えてもプログラムの動作が変わらないための概念である。名称だけでなく、利用者から観測できる振る舞いと、それを成立させる前提を契約として理解する必要がある。

固有の仕組みと例

f(2)が常に4なら式を4へ置換でき、評価順序に依存しない。現在時刻を内部で読む関数は同じ呼び出しが異なる値を返すため該当しない。

適用時は、表題が扱う判断の入力と出力を具体例で固定する。注文を扱うなら、注文ID、現在状態、要求操作、期待状態、エラーを表にし、許されない遷移もテストする。これにより内部実装を変更しても、参照透過性の定義 (式をその評価結果で置き換えてもプログラムの動作が変わらない)が保証する外部の意味を維持できる。

設計上の確認事項

責務を持つ境界が一つか、呼び出し側が内部表現へ依存していないか、再試行や並行実行で規則が壊れないかを確認する。性能が関係する場合は、抽象化前後の遅延、メモリ、外部呼び出し回数を同じ条件で測定する。

限界とトレードオフ

参照透過性の定義 (式をその評価結果で置き換えてもプログラムの動作が変わらない)の導入には、新しい型、変換、検証、運用手順を理解するコストが伴う。将来の変化を根拠なく予測して境界を増やすと、単純な変更まで複数ファイルへ波及する。解決対象が実在することを確認し、直接的な実装との比較、採用しなかった選択肢、撤回条件を記録することが重要である。