generated at
プログラムの外部との境界で、仕様を満たしたデータ型に変換する



外部のデータ構造は信用できない
外部は外部の勝手で構造が設計され、修正される
間違っているデータが来ることもある
それを境界でチェックする
汚いデータは整形し
間違っているデータは拒否する
ここで、ちゃんと仕様を満たした型に変換すると良い
内部では、仕様を満たした型のみを受け付けるプログラムを書く
内部に理想世界を築こうmrsekut
これのおかげでvalidation漏れが起きない
絶対にparseして、データ構造を変換しないと内部に渡せない



外部の入力の例
userによるformへの入力
HTTP Request/Responseとして受け取った値
DBから取得した値



何が嬉しいか?
handlingの煩わしさを解決できる
内部に汚いデータを持ち込んだ場合でも、プログラムで使用する前にvalidationなどを行うはず
それは失敗しうる
Maybe で表現したり、 throw することになる
その時、null check的に何かしらhandlingする必要が出てくる
Maybe throw のhandlingの仕方は全く異なるけど、handlingがダルいことは共通しているmrsekut
前者については、入力の型を厳格にすることでhandlingを避けるにも書いている
内部の至るところでhandlingが必要になる
境界でやってしまうことで、handling処理を一箇所にまとめることができる
仕様を満たすチェックをすることを強制できる
validationは必ず行う必要があるが、その数が多いと漏れる可能性がある
そこで、内部の関数を仕様を満たした型しか受け付けないようにしておけば、checkを漏らす可能性が消える




参考
境界で全部 parse しろ、という主張