メールアドレスとかの具体例を挙げていますが、一般論としては入力仕様が定義され、正しく理解していれば、自ずと「正しい入力」は定義できます。「正しい入力」以外がエラーとすべき物としか
Twitter / yohgaki: メールアドレスとかの具体例を挙げていますが、一般論としては入 ...
私ならバリデーションエラー(あり得ない入力)と入力ミス(あり得る入力)の区別ができないプログラマは要りません。
Twitter / yohgaki: 私ならバリデーションエラー(あり得ない入力)と入力ミス(あり ...
「正しい入力」「あり得る入力」「あり得ない入力」の区別はおもしろいと思った。
一般に、フォームからの入力が正しくなかった場合、レスポンスは「入力時のフォームの再現+エラーメッセージ」とすることが多いだろう。このとき、ユーザの入力値はそのまま表示させたい。だが、たとえばセレクトボックスについて考えると、オプションに存在しない入力値がリクエストされた場合に、入力時のフォームを再現できなくなる。月(1〜12)を選択するはずのセレクトボックスの入力値が「13」だったら、どのようなレスポンスを返せばよいのか。その場合、「13」は「あり得ない入力」とみなし、不正なリクエストである旨のみを知らせるレスポンスを返す、という考え方もあってよいのではないだろうか。
この考え方を実現しようとすると、「正しい入力」「あり得る入力」「あり得ない入力」を明確に区別する仕様が必要になる。月を入力するインターフェースがセレクトボックスではなくテキストボックスだったら、「13」は「あり得る入力」としなければならない。単なる入力ミスなのに、入力時のフォームが再現されず、不正なリクエストである旨のみ知らされても、ユーザは困ってしまう。
なお、バリデーションと呼ばれるのは、「正しい入力」と「正しくない入力(あり得る入力+あり得ない入力)」を判別する処理のことだろう。ならば、「あり得る入力」だって、バリデーションエラーということになる。いや、「あり得ない入力」とそれ以外を判別するのがバリデーションだというのであれば、「正しい入力」と「正しくない入力」を判別する処理は何と呼べばよいのか。