0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

デブのたしなみファットモデル、スリムコントローラーの原則

Posted at

ファットモデル、スリムコントローラー原則をまとめてみる。

基本はロジックの中心をモデルに置くことで保守性や拡張性を高める。

トレイトを活用することでモデルをぽっちゃり程度に保つ。

MVCアーキテクチャの基礎

MVCパターンは

  • モデル:データ管理とビジネスロジックの中心
  • ビュー:ユーザーへ情報を表示
  • コントローラー:ユーザーからの入力を受け、モデルとビューの調整を担当

この分業体制によって、各コンポーネントが明確な役割がある。

ファットモデル、スリムコントローラーとは

ビジネスロジックやデータ処理をモデル側に集約
コントローラーには最低限の処理だけを残すというもの。

※最近慣れてきてなんでもコントローラーにコードを書いていたらスリムコントローラーを意識してくださいと指摘いただき知りました。

  • ファットモデル
    • データ検証
    • ビジネスルール
    • 複雑なクエリ
    • 外部サービスとの連携などの重厚な処理を担当
  • スリムコントローラー
    • リクエストの受け渡し
    • モデル・ビューとの連携

これを徹底することでコードの再利用性が高まり、テストもしやすい構造になる。

トレイトでさらにスマートに

トレイトを利用することでモデルの肥大化を防ぐ。

  • コードの再利用性向上
    • 複数のモデル間で共通する処理をトレイトに切り出すことで、重複コードを削減。
  • 責任の明確化
    • 補助的な機能はトレイトに委譲する
      • モデルの役割が明確に。
  • テストの効率化
    • トレイトごとに独立したテストが可能

この原則が選ばれる理由

保守性・拡張性の向上

  • 役割分担の明確化:各コンポーネントが専念する処理を持つことでコード全体の理解と変更を簡単にする。

  • モジュール化:トレイトを活用することで、機能ごとの分割が明確になり、システム全体の拡張がスムーズになる。

再利用性の促進

  • 共通ロジックの一元管理:同じ処理を複数のモデルで使い回す際、トレイトを利用すればコードの重複がなくなる。管理が一元化され改修が簡単になる。

チーム開発でのメリット

  • 作業の分担が容易:フロントエンドとバックエンド、または各専門領域の開発者間で明確な役割分担ができる。効率的な開発体制が整う。

注意点

ぽっちゃり系で抑えるモデルの肥大化対策

ぽっちゃり系モデルを目指す際、モデルが過剰に太ることを防ぐため、対策が重要。

  • サービスオブジェクトやトレイトの適切な利用
    • 必要な処理をモデル内にすべて持たせるのではなく役割ごとに分割する。
  • 定期的なリファクタリング
    • コードが複雑になりすぎた場合は責務を再評価して適切な分割を行う。

意識しながら来週も頑張っていきましょう!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?