疎結合がソフトウェア開発を変える

http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20050802/165731/
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20050802/165732/

疎結合は昔からの基本だ.設計の大原則の一つと言って良い.
問題なのは疎結合の意味を理解していない人もいることだ.どれほど文法的には疎結合にしてもセマンティクス的に密結合であれば,その「疎結合」にはなんの価値もない.

なぜこう思うかというと、SQL の文字型は固定長なんですね。一方、アプリケーションの文字型には限度がありません。となると、データベースをアップデートするとき、文字が長すぎるといった問題が起こり得るんです。
(中略)

  • データベースと切り離す。……のは良いことだが、とばっちりはすべて自分に来る。*1
  • 物事が簡単になるのに、みんな簡単なバリュータイプを作りたがらない(詳しいことは When To Make a Type(PDF)で)。
  • 簡単なバリデーション機能を UI に入れることで、よりよいインターフェイスが出来る。バリデーションのロジックを重複させないようにするのがポイント。

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FixedLengthString

よく「データベースレイヤーを切り離す」という.それは間違いではない.しかし実際にそこで行われていることの多くは,セマンティクス的には密結合のままに,無意味で手間のかかるコードを追加して工数とバグを増やしているだけだったりする.それは疎結合でもないしオブジェクト指向でもない.

*1:原文は"Insulating the data store, is good, but you still have to live by the constraints it imposes on you."「データベースと切り離す.そのアイデアは悪くない.だが,それでもなお,あなたはデータベースが課す戒律に従って生活しなければならないだろう.」程度の意味だと思う.いくら切り離したとはいえ,何人たりともデータベースがもたらす制約から逃れることはできないのだ.