書き置き

何かを書き残す

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って活きてるのだろうか?
みんなどうしてるんだろう?