Java
Rails

なぜFatControllerおばさんしてしまうのか

こんばんは、きょとん(@ippomihosanpo)です。
先日はじめてRails上級者の先輩方にコードレビューしてもらいました。

ぺーぺーの私がRailsのコードをはじめて上級者にレビューしてもらった

シンプルな仕様のコード量も少ないものだったはずなのに、コントローラ周りの指摘が多かった気がします。
いつもやりがちなんです。あたしって、ほんとバカ。
最初に携わったRailsの既存プロダクトがFatControllerだったせいにしたい

なんで、こう、私はFatControllerおばさんと化してしまうんだ

「デブの実装はやっぱりFatControllerなのかww」

とディスられる前に直したいです。原因を探りました。

よく考えると私が知ってるモデルとRailsのモデルが違かった

MVCのモデルは「データをいれる器」という認識でした。
器なので、基本的にはデータの単純な出し入れのみでロジックは色々書かない。
という考えがずっとこびりついていました。

JavaEEの三階層アーキテクチャのしがらみ

JavaEEを習っていた時システムは三階層として勉強してきました。

プレゼンテーション層 <=> ビジネスロジック層 <=> データアクセス層 <-> DB

この各層の間でデータのやりとりをするのが「モデル」でした。
MVCに当てはめるとこんなかんじです。

M:モデル
V:プレゼンテーション層
C:ビジネスロジック層・データアクセス層

となるとRailsでいうModelはモデル+データアクセス層

RailsのモデルはActiveRecordを継承していて、モデル自身がデータにアクセスできます。
三階層で考えてMVCに当てはめるとこんな感じになります…よね?

M:モデル・データアクセス層
V:プレゼンテーション層
C:ビジネスロジック層

この認識の違いがあると、データアクセス周りの処理をModelに書かないといけないのに、JavaEEの三階層アーキテクチャのしがらみによりControllerに書いてしまうという過ちが生じてしまうのです…。

さいごに

すみません、長い言い訳になってしまいました…。
かなり当たり前のことをいってたらすみません…。
FatControllerやりがちな人で元Java畑の人でこういう人いませんか…?
いないですか…そうですか…。

Railsがんばります!!いいコードかけるようにがんばります!!