Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
@secret_hamuhamu
ファットコントローラ撲滅運動
自己紹介
名前:大橋 勇希
コードネーム : はむ(@secret_hamuhamu)
今回のテーマ
ファット
コントローラ!!!
MVCのおさらい
Model View Controller
model
アプリケーションデータ、ビジネスルール、ロジック、関数
wikipedia参照
Model View Controller
view
任意の情報表現(HTML)
wikipedia参照
Model View Controller
controller
入力を受け取りmodelとviewへの命令に変換する
wikipedia参照
controller
model view
呼び出す方向
ファットコントローラ
modelとcontrollerの境目が混じっている
とにかくながい
アクション
メソッドが
太りすぎだぶ〜
なるべくcontrollerは薄くしたい
fat controller
skinny controller
どうすればいいか?
108あるポイントの内、
3つ紹介
1つ目
controller内で、
実装したビジネスロジック
を除去
controller内で、
実装された
ビジネスロジ
ック
クラス化し
modelに移す
2つ目
controllerとmodelの
やりとりを減らす
controller 〇〇model
シーケンス図
controller 〇〇model
シーケンス図
controllerが何度も
〇〇modelに
尋ねている
controller 〇〇model
シーケンス図
本来、modelでやるべき
ビジネスロジックが
controllerに混ざって
いる
Tell, Don't Ask
何度もcontrollerがmodelに
尋ねる(Ask)のではなく
命じる(Tell)
controller 〇〇model
シーケンス図
controller 〇〇model
シーケンス図
controllerは、命じる
のみ
controller 〇〇model
シーケンス図
ビジネスロジックを
考えなくて済み
関心事が分離された
3つ目
窓口を作る
複数のクラスを
呼び出し順番通りに
メソッドを実行して
いる
Facadeパターン
Facadeという窓口を
用意してあげる
controllerは、
どういう順番で
クラスが呼び出され
ているのか
知らなくてよい
fatから
skinnyへ
ご清聴ありがとうご
ざいました
ファットコントローラ撲滅運動
ファットコントローラ撲滅運動
ファットコントローラ撲滅運動
Upcoming SlideShare
Loading in …5
×

ファットコントローラ撲滅運動

11,358 views

Published on

ファットコントローラ撲滅運動

Published in: Engineering
  • Be the first to comment

ファットコントローラ撲滅運動

  1. 1. @secret_hamuhamu ファットコントローラ撲滅運動
  2. 2. 自己紹介 名前:大橋 勇希 コードネーム : はむ(@secret_hamuhamu)
  3. 3. 今回のテーマ
  4. 4. ファット コントローラ!!!
  5. 5. MVCのおさらい
  6. 6. Model View Controller model アプリケーションデータ、ビジネスルール、ロジック、関数 wikipedia参照
  7. 7. Model View Controller view 任意の情報表現(HTML) wikipedia参照
  8. 8. Model View Controller controller 入力を受け取りmodelとviewへの命令に変換する wikipedia参照
  9. 9. controller model view 呼び出す方向
  10. 10. ファットコントローラ modelとcontrollerの境目が混じっている
  11. 11. とにかくながい
  12. 12. アクション メソッドが 太りすぎだぶ〜
  13. 13. なるべくcontrollerは薄くしたい
  14. 14. fat controller skinny controller
  15. 15. どうすればいいか?
  16. 16. 108あるポイントの内、 3つ紹介
  17. 17. 1つ目
  18. 18. controller内で、 実装したビジネスロジック を除去
  19. 19. controller内で、 実装された ビジネスロジ ック
  20. 20. クラス化し modelに移す
  21. 21. 2つ目
  22. 22. controllerとmodelの やりとりを減らす
  23. 23. controller 〇〇model シーケンス図
  24. 24. controller 〇〇model シーケンス図 controllerが何度も 〇〇modelに 尋ねている
  25. 25. controller 〇〇model シーケンス図 本来、modelでやるべき ビジネスロジックが controllerに混ざって いる
  26. 26. Tell, Don't Ask
  27. 27. 何度もcontrollerがmodelに 尋ねる(Ask)のではなく 命じる(Tell)
  28. 28. controller 〇〇model シーケンス図
  29. 29. controller 〇〇model シーケンス図 controllerは、命じる のみ
  30. 30. controller 〇〇model シーケンス図 ビジネスロジックを 考えなくて済み 関心事が分離された
  31. 31. 3つ目
  32. 32. 窓口を作る
  33. 33. 複数のクラスを 呼び出し順番通りに メソッドを実行して いる
  34. 34. Facadeパターン
  35. 35. Facadeという窓口を 用意してあげる
  36. 36. controllerは、 どういう順番で クラスが呼び出され ているのか 知らなくてよい
  37. 37. fatから
  38. 38. skinnyへ
  39. 39. ご清聴ありがとうご ざいました

×