ベルトとブレース (サスペンダー)アプローチをプログラミングに、特にデータ検証に使用することは良い習慣であるかどうか疑問に思っていました。これは、次の例から生じました。
フォームを作成していて、すべてのフィールドにリスナーを追加しました。これOK
は、フォーム内のすべてのフィールドに有効な値がある場合にのみボタンが有効になることを意味します。OK
次に、ボタンがクリックされたときに実行されるコードを書いていました。
私の悲観的な側面は、ベルトとブレースが誰にも害を及ぼすことはなく、フォームロジックにバグがある場合に備えてフォームを再度検証しても害はないと判断しました。
しかし、検証が失敗した場合に何を入力すればよいかわかりませんでした。私がこのようなことをすると:
if (! form.isValid()) {
displayErrorMessage();
}
次に、決して表示されるべきではないエラー メッセージを表示するコードを作成する必要があります。将来このコードを保守する人は、理論的には不要な対話について心配し、混乱する可能性があります。私が最後に望んでいるのは、なぜこの特定のダイアログが表示されないのか疑問に思っている人です。
スケールの反対側のオプションは次のとおりです。
if (! form.isValid()) {
throw new RuntimeException("This should never happen!");
}
率直に言って、私はそれを入力することさえ汚いと感じますが、おそらく私が見逃したそれを使用する正当な理由があります.
だから最終的に私は次のようになりました:
assert form.isValid();
ただし、その欠点は、実行時にブレースが存在しないため、実際にはベルトとブレースではないため、コードにバグがある場合、フォームのズボンがそのまま落下することです。
だから余計な検証をするべきではないのかもしれませんが、それでも害はないと思っている部分があります。
同様の状況であなたが何をしているのかを聞くことに興味があります。
(編集:質問は、フォームが有効なデータを返すことを保証するための最良の方法は何かを尋ねています。フォームの出力は、データベースなどに入る前に再度検証されると仮定します。)