このサイトについて

MVCの議論で思い出したこととか

MVCの議論で思い出したこととか

たまにPython自体の技術コンサルみたいなことを頼まれることがある。プロダクトのコードを読ませてもらって,改善点を指摘したりするようなことをやる。

ただ,純粋にPythonにかかわるアドバイスって最初のうちだけで終わってしまい(Pythonは覚えること少ないからね),だんだんと設計みたいな部分に切り込んでゆくことになる。フレームワークを使ったコードで本当によく見かけるのが「分厚いコントローラに薄いモデル」みたいな設計。もっと進んで「分厚いテンプレート(ビュー?)に薄いコントローラとモデル」というのもたまにあるんだけどあまりない,かな。

で,そういう場合は「テスト」を軸にして,設計上コントローラに実装すべき機能を指摘していったりする。なぜテストを軸にするかというと,改善した結果が目に見えやすいから。「ほら,コントローラに機能を移すと,テストが書きやすくなる。おまけにカバレッジがあがるでしょ」みたいな感じで。

コードを読んでいてよくよく思うのは,MVCうんたらの話はWebの功罪が大きいと思う。Webアプリなら,ビジネスロジック実装するのがコントローラだろうがモデルだろうが,たいして見た目的には変わらないからねえ。保守性,拡張性,テスト可能性は明らかに違ってくるかもしれない。そこまで求められる余裕のある開発が少ないのも確かだと思うし。コントローラのテストもせい,というのはもっともな話だが,面倒くさいし,時間がないとなおさら後回しになる。Railsが際だってMVCの誤用を助長しているわけでもないと思うし,今時他の言語,フレームワークでも起こりうる,ごく一般的なことなんじゃないかなあと思う。道具は使う人次第でいかようにも,ということなんでしょうねえ。

2010-08-27 04:52