DRY原則とバリデーション機能
最近、よくDRY原則のことについて考えます。Don't Repeat Yourselfです。
Webアプリケーションでは、よくバリデーション機能を
クライアントとサーバーで同じものを実装します。
例えば必須チェックや相関チェックなど、クライアントでもやって、
サーバーでもやりますよね。
J2EEで一般的なのは、クライアントはJavaScriptで、
サーバーサイドはCommons-Validatorのようなチェック機能でしょう。
(個人的にこの辺りは独自なものを使ってることが多いですが・・・・)
でもそれってDRY原則に反しているような気がしてなりません。
重複して同一の機能を実装することは、保守性の観点からも良くありません。
片方に仕様変更が入れば、当然もう片方も同様に直さなくてはいけません。
クライアントサイド・サーバーサイドでは機能として、別のものと
考えるべきなのでしょうか・・・
当然、重要なのはお客さんからの要望なのでお客さんから
望まれれば当然実装します。しかし、両方書くのはDRY原則に
反しているのであまりやりたくないところです。
じゃあ別案で、例えば自動生成するっていう方法もあると思いますが、
それでも自動生成する側・される側と二つできてしまうのに
代わりはありません。
うーーーむ、皆さんはどう考えていますか?と聞いてみたいところです(ーー;)