いけむランド

はてダからやってきました

Differences between Verification and Validation

コードレビューなどをしていて、たまに「これってメソッド名として verify より validate の方が適切じゃね?(または逆)」というパターンを見かけることがあったため、自分の中での解釈をメモしておく。

以下、主観も入っていると思われるため、参考にする場合はほどほどでお願いします。

定義的なものは以下のサイトを参考にされたい。

www.geeksforgeeks.org

自分が実装する場合にはメソッド名として

  • 調べた結果の詳細はどうでも良くて、結果が OK/NG だけを知りたい場合には verify
  • 調べた結果の詳細を基に何かしらを判断したい場合には validate

を使っている。

これも既存の同名のメソッドの実装がそれを実現するようなインタフェースになっているからというのがその理由になっている。

verify

guava.dev

駄目だったら例外を投げる。(または boolean を返すでも良いと思う。) 基本的にオブジェクトがその状態である場合は正常な処理の継続ができないということを伝えようとする意図が見えるものという解釈をしている。

validate

docs.oracle.com

調べた結果のオブジェクトの集合を返す。呼び出し側はこのオブジェクトの集合を基に後続の処理をどのようにするか判断をする必要がある。

HTTP リクエストパラメータを検証して、不正なら HTTP レスポンスのステータスコードで 400 を返すみたいなことをする場合はこちらの名前を利用するべき。

checkjudge は論外であるため、よほどのことがない限り使わないで欲しい。

idesaku.hatenablog.com

www.kyouikuteki.com