作成アクションと編集アクションを別々にするか、作成アクションと編集アクションを1つにまとめる方が良いでしょうか?


15

ASP.NET MVC 2を使用して、コントローラー/ビュープレゼンテーションレイヤーと、ビジネスロジックレイヤー、データアクセスレイヤー[ストアドプロシージャおよびストアードプロシージャと通信するクラス/メソッド]で構成されるモデルを使用しています。

ビジネスレイヤー以上では、ほとんどの目的で、Editはオブジェクトの作成とオブジェクトの編集の両方を表すことができるようです。これは、「保存」メソッドを定義するリポジトリ設計パターンとよく一致します。IDが0の場合はストアドプロシージャをチェックインし、0の場合は新しいオブジェクトを作成します。それ以外の場合は、カテゴリIDが1に一致するため、既存のオブジェクトを更新できます。

議論の第一のポイントは、作成を含む編集をDALレイヤーを超えて作成と編集の別々の部分に分割することが最も理にかなっている場合です。

明らかな例をルートとして示すことができます:

作成 - のhttpを:// someurl / somearea /編集/ 0

編集 - のhttp:// someurl / somearea /編集/ 254

作成 - のhttp:// someurl / somearea /作成

編集 - のhttp:// someurl / somearea /編集/ 254

これに関して確立された標準やベストプラクティスはありますか?

私はこれが小さな詳細であることを知っていますが、ロジスティック的に重要だと思います。


4
個人的には、作成アクションと編集アクションを別々にすると、実装がずっときれいになる(そしておそらく保守が容易になる)と思います。
アダムリア

1
DALの1つのメソッド、意味がある場合はAPIの2つのメソッド。
CaffGeek

私の観点からすると、別々の作成と編集がmvcに自然にやってくるので、そのアプローチを採用すると、mvcを最大限に使用する多くの利点が得られます。
maz3tt

回答:


5

単一の責任原則に従わない場合は、作成/編集を分離する価値があると断言できます。

URLに正しいアクションを持たせることで、より良いSEOがあると主張することもできます。

2つを分離しないと、コードの単体テストが難しくなります。

コードを読んでいる新しいプログラマーは、おそらく「編集」メソッドでオブジェクトを作成する必要があるため、コードが非常に直感的であるとは思わないでしょう。意味的に意味がありません。ただし、DALのSave()メソッドに同情できます。

それについて考えると、すべてをEditメソッドに入れることの利点を実際に見ることはできません。


4

通常Save、DALで1つのメソッドを作成することを好みますが、実際にはCreate/ Edit/をDelete個別に実装します。

たとえば、私のSaveメソッドはオブジェクトの状態を確認し、必要に応じてCreate / Edit / Deleteメソッドを呼び出します

switch(obj.State)
{
    case ObjectState.New:
        CreateObject(obj);
        break;
    case ObjectState.Modified:
        UpdateObject(obj);
        break;
    case ObjectState.Deleted:
        DeleteObject(obj);
        break;
}

これにより、オブジェクトを保存するための1つの汎用メソッドを呼び出すことができますが、各(実装、編集、削除)の実装は分離されたままです。


その削除をどのように伝えることができますか?
-NoChance

通常、私のオブジェクトにはStateプロパティがあります。たとえば、Deleteボタンをクリックすると、オブジェクトが削除済みとしてマークされ、呼び出しますSaveChanges()
レイチェル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.