MVCについて思うこと
MVCってありますよね。Mode,View,Controllerなやつ。
いままで幾つかWebの現場でも、やっぱりサーバ側はMVCなフレームワークを使ってるのだが
どうにも上手いこといってる気がしない。
「Controllerは基本シンプルになるはず」論。
アクションを受け取ってModelを読んでViewに渡すだけだ、っていう。
でもさ、表示内容とか、そもそも何を表示するか、ってそんな単純じゃないんだけど。
ユーザやデータの状態で何をどう表示するのか変わってくることもあるわけで。
ってかそこがだいぶ重要なことって多いと思うんだが。
Viewはほぼイコールでテンプレートだ。
テンプレート上であまり複雑な条件を書くと、それはそれは読みづらい。
でも表示制御のために面倒な条件が必要なことはある。その場合は…Controller側でbooleanに変換する?
それともテンプレート上で使えるカスタム関数的なものを、1箇所onlyであっても作ってるのか?
一番微妙なのが、Model。
データとビジネスロジックを持つと言われている。
ビジネスロジックってなんやねん!、って勢いで様々な処理が、もしくは単にDBにselectするだけの処理が
Modelと言われる層に突っ込まれていく。
しかも結局Modelのいち関数は、ある画面専用になったりする。
複雑な条件でデータアクセスが必要なこともあるし、必要な項目は画面によって違ったりする。
それを無理やり共通で使えるようにして、結局中で分岐してるだけな謎コードが出来上がる。
データモデルの設計がちゃんとできていれば、こういうことは起きないんだろうか?
DB設計ではなく、アプリケーションレイヤでの抽象的なデータモデルが。
という感じで
MとVとCは、名前上は分かれているがどの処理をどこに置くかは
個々人のさじ加減になってしまうことが多いのではないかと思う。
そんなわけで、MVCって活きてるのだろうか?
みんなどうしてるんだろう?