web-dev-qa-db-ja.com

Codeigniter / MVCワークフロー

ワークフローの質問です。

私はMVCをじっと見つめているだけで、他の人が通常MVCでどのように機能するのか疑問に思っていますか?私が目にする2つのオプションは、最初にモデルとコントローラーを完全にコーディングし、その後ビューで作業することです。もう1つのオプションは、すべてのパーツを同時にコーディングすることです。

MVCでコーディングするための最も効率的な方法は何ですか?社内デザイナーや指定された仕事はありませんので、誰もが同じタスク(コーディング、設計、テスト、dbなど)を行います。

ありがとう!

4
David

3番目のオプション テストの記述から開始 があります。これはより良いオプションであり、MVCに固有ではありません。テストを作成することから始める場合、次のステップはMVCへのアプローチによって異なります。

  • ファットコントローラー/スキニーモデル

    あなたのモデルは本質的に POPOs であり、リクエスト間で状態を維持するタスクが課されている間、コントローラーはすべての重労働を行います。

  • スキニーコントローラー/ファットモデル

    コントローラは、データの受け渡しに制限されており、ビジネスロジックのほとんど(すべてではないにしても)がモデルに存在します。

CodeIgniterは最初のアプローチを優先しますが、後者のアプローチを制限しません。ファットモデルを使用すると、開発サイクルの非常に早い段階でビジネスロジックをテストする機会が得られるため、2番目のアプローチを強くお勧めします。

スキニーモデルでは、ビジネスロジックをテストする前に、コントローラーとモデルの両方を構築する必要がありますが、これは特に効率的ではありません。あなたのビジネスロジックはあなたのアプリケーションのより重要な部分です、私はそれをビルドしてテストするのが早ければ早いほど、より良いことは明らかだと思います。

要約すると、私のワークフローは次のとおりです。

  1. ビジネスロジックテストを記述します。
  2. これらのテストを満たすモデルを記述し、
  3. 他のすべてのためにTDDを練習しているふり
  4. コントローラとビューを記述します。

参考文献:

1
yannis
  • コントローラーで作業し、作業を開始してから、メソッドをモデルにプッシュしてから、モデルをリファクタリングし、必要に応じて複数のモデルにプッシュします。

  • 私が読んだCIエキスパートのほとんどは、推奨される「細い」モデルを使用しています。これを行うもう1つの理由は、特定の実装の詳細を押し下げるという考えです。コントローラはできるだけ抽象的である必要があります。
    たとえば、フォームの検証を行うには-コントローラーは「このフォームを検証する」と言います。フォームについて何も知る必要はありません。したがって、フォームが変更されると、そのフォームで機能するモデルに直接移動します。

  • 設計する1つの方法は、特定のユーザーロール(編集者、管理者、購入者など)がその時点でアプリケーションを使用している人向けです。したがって、クラスが非常に異なるユーザー(またはユースケース)にサービスを提供していることを発見した場合、それは将来変更することが困難になる可能性があることを示しています。

  • 新しい開発者がコードを読んで何が起こっているのか理解できない場合、DRYは役に立ちません。物事をシンプルに保ち、1つの方法ですべてをつぶすという誘惑を避けます。 (更新します!挿入します!スライスします!ダイスします!メンテナンスの悪夢です!)

  • オブジェクト指向プログラミングの学習は言語に依存しません。 OOPに関する最高の本とチュートリアルのいくつかはJavaで書かれています。基本的な概念は非常に似ているので問題ではありません。また、最新の本を入手しなければならないという新しい話題はありません-そこ素晴らしいですOOP数年前に書かれた本.

0
cartalot