6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-08-30

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

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?