5

一般に、MVC フレームワークには次のような構造があります。

/models
/views
/controllers
/utils

ただし、Web アプリケーション スイートでは、システムをアプリケーション スイートではなく 1 つのアプリケーションとして扱わない限り、すべてのモデル、ビュー、およびコントローラーをひとまとめにすることはおそらく最善ではないだろうと判断しました。ただし、ユーザーとユーザーの役割の概念のように、すべての「アプリケーション」を結び付けるものがあります。

だから私は3つの可能な解決策があります:

(1) 本当にやりたくないことをして、どのアプリに属しているかに関係なく、すべてのモデル、ビュー、およびコントローラーを一緒に保ちます。これは、スイートを単一のアプリケーションとして扱っています。これは、ユーザーを含むいくつかの共通スレッドによって結び付けられているためです。

(2) アプリケーションごとにコードをグループ化します。

/app1
    /models
    /views
    /controllers
    /utils
/app2
    /models
    /views
    /controllers
    /utils

(3) コードをタイプごとにグループ化し、ユーティリティ コードをすべてのアプリケーションで共有できるようにします。

/models
    /app1
    /app2
/views
    /app1
    /app2
/controllers
    /app1
    /app2
/utils

見逃したオプションはありますか?将来の開発者にとって最も論理的なスキームは何ですか? 私は個人的には 2 と 3 を好みますが、おそらくほとんどの人は 1 を期待するでしょう。

4

4 に答える 4

6

2は良いスタートです。アプリケーション スイート内のすべてのアプリで使用される共通のモデル、ビュー、およびユーティリティを格納できる共通のフォルダーを用意することを検討する必要があります。

/app1
   /models
   /views
   /controllers
   /utils
/app2
   /models
   /views
   /controllers
   /utils
/common
   /models
   /views
   /utils
于 2008-10-07T13:28:06.743 に答える
5

アプリケーションをある程度分離したい場合は、2) が最良の選択肢のようです。「/app#」レベルに「/common」フォルダーを作成して、すべてのアプリケーション間で共有リソースを共有することもできます...共有ユーティリティ クラスなどのようなものです。

于 2008-10-07T13:26:42.800 に答える
1

アプリがデータを共有する場合、(私にとって) モデルをグループ化することは理にかなっています。

ただし、ビューとコントローラーについては、別々のビジネス ロジックとプレゼンテーションがあると想定しているため、別々にしておく方がおそらく理にかなっています。

さらに、アプリがバージョン管理で個別に保持されている場合 (バージョン管理を使用していますよね? :)、最初または 3 番目のオプションの実装が難しくなります。

したがって、すべてを考慮して、2番目の例のように、アプリをトップレベルで分離するでしょう。

于 2008-10-07T13:22:36.600 に答える
1

私は通常、機能ごとにコードをグループ化するので、あなたの場合、アプリケーションごとにグループ化するのが最も理にかなっています。その理由は、特定の機能に取り組みたい場合に、必要なコンポーネントを探すために 3 つの個別のフォルダーを検索する必要がないからです。高レベルの機能でグループ化すると、必要なものがすべて揃っていることがわかります。

于 2008-10-07T13:24:52.850 に答える