なるほど、わかりやすい
“このようにレイヤーを分けているにも関わらず、上位レイヤーに呼び出すデータは、下位レイヤーの事前条件を満たすようバリデーション済みであることを暗黙的な呼び出し条件にしてしまうことになる。”
入力時のバリデーション超重要。実感としても、不具合の原因が 想定してなかった入力値だったのってすごく多い。 その次に重要なのが出力、出力値についても厳密にValid設計すべき
クソ面白そう。あとで絶対読む。
バリデーションは形式と意味の2種類があり、責務の明確化と多層での実装がシステムの健全性に不可欠。業務上Validなデータを定義するところから始める方が結果的に簡単で安全。
バリデーション?難しいにゃ! ボクにはお膝の上があればいいにゃ!
なんか色んな話が混じっているようにも思えるが… ひとつひとつは割と大事な話だと思う。銀の弾丸はない。
面白い考察で、『Domain Modeling Made Functional』でも似たようなことはしてるけど若干ニュアンスが違うので併せて読むのが良いかもしれない。和訳版も出たし。
これはDDDではなくトランザクションスクリプトで、入力値をバリデーションしつつコントローラごとに業務ロジックと入力チェックを作るので悲惨なことになる。入力値から構築する集約=ドメインモデルをValidにするべき
入力時のバリデーションと出力時のエスケープを「サニタイズ」とか言ってごちゃ混ぜにしている人は多い。私自身は入力チェックはせず(エラーとしない)「善きに計らう」実装を心がけてる。
>(TERASOLUNAのガイドのように「再利用しない」というのも一案ではあるが…) 通常の対策としては業務ロジックでも、事前条件を明記しバリデーションを同様に実装することである。 言うほど「通常の対策」??????
10年前バリデーションナイトで聞いたやつだ!!!
なるほど、Wlaschinもそういうこと言われたから https://fsharpforfunandprofit.com/transactionscript/ ってなったのか
Javaみたいな言語だと数値の要素に文字列突っ込まれるとそもそも処せないので入力値時点で弾くしか無くなる。とりあえず全部の値を受け入れてmodelで弾くのはRailsとかの思想。いわゆる型の有無でも変わってくる。
レイヤ間、tier間のバリデーションの考え方。always valid layerを作るのが初手で、そのvalidを定義するのがドメインモデリングの一つ
よい
バリデーション解体新書 - kawasima
なるほど、わかりやすい
“このようにレイヤーを分けているにも関わらず、上位レイヤーに呼び出すデータは、下位レイヤーの事前条件を満たすようバリデーション済みであることを暗黙的な呼び出し条件にしてしまうことになる。”
入力時のバリデーション超重要。実感としても、不具合の原因が 想定してなかった入力値だったのってすごく多い。 その次に重要なのが出力、出力値についても厳密にValid設計すべき
クソ面白そう。あとで絶対読む。
バリデーションは形式と意味の2種類があり、責務の明確化と多層での実装がシステムの健全性に不可欠。業務上Validなデータを定義するところから始める方が結果的に簡単で安全。
バリデーション?難しいにゃ! ボクにはお膝の上があればいいにゃ!
なんか色んな話が混じっているようにも思えるが… ひとつひとつは割と大事な話だと思う。銀の弾丸はない。
面白い考察で、『Domain Modeling Made Functional』でも似たようなことはしてるけど若干ニュアンスが違うので併せて読むのが良いかもしれない。和訳版も出たし。
これはDDDではなくトランザクションスクリプトで、入力値をバリデーションしつつコントローラごとに業務ロジックと入力チェックを作るので悲惨なことになる。入力値から構築する集約=ドメインモデルをValidにするべき
入力時のバリデーションと出力時のエスケープを「サニタイズ」とか言ってごちゃ混ぜにしている人は多い。私自身は入力チェックはせず(エラーとしない)「善きに計らう」実装を心がけてる。
>(TERASOLUNAのガイドのように「再利用しない」というのも一案ではあるが…) 通常の対策としては業務ロジックでも、事前条件を明記しバリデーションを同様に実装することである。 言うほど「通常の対策」??????
10年前バリデーションナイトで聞いたやつだ!!!
なるほど、Wlaschinもそういうこと言われたから https://fsharpforfunandprofit.com/transactionscript/ ってなったのか
Javaみたいな言語だと数値の要素に文字列突っ込まれるとそもそも処せないので入力値時点で弾くしか無くなる。とりあえず全部の値を受け入れてmodelで弾くのはRailsとかの思想。いわゆる型の有無でも変わってくる。
レイヤ間、tier間のバリデーションの考え方。always valid layerを作るのが初手で、そのvalidを定義するのがドメインモデリングの一つ
よい