こんばんは、きょとん(@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がんばります!!いいコードかけるようにがんばります!!