プログラムの外部との境界で、仕様を満たしたデータ型に変換する
https://gyazo.com/141c5002b4fd3e5c576a9061e3fe2e18
外部のデータ構造は信用できない
外部は外部の勝手で構造が設計され、修正される
間違っているデータが来ることもある
それを境界でチェックする
汚いデータは整形し
間違っているデータは拒否する
内部に理想世界を築こうmrsekut.icon
これのおかげでvalidation漏れが起きない
絶対にparseして、データ構造を変換しないと内部に渡せない
外部の入力の例
userによるformへの入力
HTTP Request/Responseとして受け取った値
DBから取得した値
何が嬉しいか?
handlingの煩わしさを解決できる
内部に汚いデータを持ち込んだ場合でも、プログラムで使用する前にvalidationなどを行うはず
それは失敗しうる
Maybeで表現したり、throwすることになる
Maybeとthrowのhandlingの仕方は全く異なるけど、handlingがダルいことは共通しているmrsekut.icon
内部の至るところでhandlingが必要になる
境界でやってしまうことで、handling処理を一箇所にまとめることができる
仕様を満たすチェックをすることを強制できる
validationは必ず行う必要があるが、その数が多いと漏れる可能性がある
そこで、内部の関数を仕様を満たした型しか受け付けないようにしておけば、checkを漏らす可能性が消える 参考
境界で全部parseしろ、という主張