- 本書における「イベント」とは何か
- イベントは「判断の起点」ではない
- イベントは「判断が終わったこと」を表す
- なぜ、イベントが明確だと境界を越えたと分かるのか
- イベントは、境界を越えたことの通知である
- 判断が終わっていないものは、イベントではない
- この章のまとめ
本書における「イベント」とは何か
一般に、 イベントというと、
- onClick
- onTextChanged
- onResume
のような、 UI やフレームワークが発火する通知 を思い浮かべるかもしれません。
しかし、 本書で扱う「イベント」は、 それらとは少し意味が違います。
本書におけるイベントとは、
判断が完了したことを、 構造として外部に表現するもの
です。
イベントは「判断の起点」ではない
よくある誤解として、
- イベントが来たから判断する
- イベントを受けて状態をチェックする
という考え方があります。
しかしこの考え方では、 判断はイベントの 後工程 に残ります。
その結果、
- if が増える
- 状態チェックが散らばる
- 「このイベントは安全か?」を毎回考える
という構造になります。
これは、 イベントが判断を内包していない 状態です。
イベントは「判断が終わったこと」を表す
本書でのイベントは、 次の役割を持ちます。
- 判断がすでに完了している
- 前提条件はすべて満たされている
- 境界を越えてよい状態になった
つまりイベントは、
「ここまでの判断はすべて終わりました」 という合図
です。
イベントは、 これ以上判断を進めるための材料ではありません。
判断を 終わらせた結果 です。
なぜ、イベントが明確だと境界を越えたと分かるのか
イベントが明確であるとは、
- 判断済みの値しか持たない
- 未検証・未確定な情報を含まない
- そのイベントが存在するだけで前提が成立している
という状態です。
このようなイベントは、
- 境界の内側でしか生成できず
- 境界の外側では、前提を疑う必要がありません
そのため、
そのイベントを受け取った瞬間に、 「判断はすでに終わっている」と分かる
のです。
イベントは、境界を越えたことの通知である
境界とは、
- 判断を行う世界
- 前提を確認する世界
と、
- 判断を信じてよい世界
- 前提を疑わなくてよい世界
を分ける線でした。
イベントは、
その境界を越えたことを知らせる唯一の手段 です。
だからこそ、
- 境界の外では if が消え
- 状態チェックが不要になり
- 処理は単純になる
のです。
判断が終わっていないものは、イベントではない
もしイベントが、
- 曖昧な名前
- 未検証の値
- 「まだ判断が必要そうな情報」
を含んでいる場合、
そのイベントを受け取った側は、
- 本当に安全か?
- この状態で呼んでいいのか?
と、 再び判断を始めてしまいます。
これは、
イベントが境界を越えていない 状態です。
この章のまとめ
- 本書におけるイベントは、UI 通知ではない
- イベントは「判断が起きる瞬間」を表す
- それは「判断が完了した」という合図である
- 明確なイベントは、境界を越えたことを示す
- イベントが曖昧だと、判断は終わらない