Apakah lebih baik memisahkan tindakan Buat dan Edit atau gabungkan Buat dan Edit menjadi satu?

15

Kami menggunakan ASP.NET MVC 2 dengan Controller dan View Presentation Layer dan Model yang terdiri dari A Business Logic Layer, Data Access Layer [Prosedur Tersimpan dan kelas / metode untuk berbicara dengan prosedur yang tersimpan].

Di lapisan bisnis dan di atas untuk sebagian besar tujuan, Edit tampaknya mampu mewakili penciptaan objek dan pengeditan objek. Ini bertepatan dengan Pola Desain Repositori kami yang mendefinisikan metode "Simpan". Kami cukup memeriksa prosedur tersimpan jika ID adalah 0 dan kemudian membuat objek baru jika 0 jika tidak, kami hanya dapat memperbarui objek yang ada, karena id kategori harus cocok dengan satu.

Poin utama diskusi adalah jika paling masuk akal untuk memisahkan Edit yang mencakup Pembuatan menjadi bagian terpisah dari Buat dan Edit di luar lapisan DAL.

Contoh nyata dapat ditampilkan sebagai rute:

Membuat - http: // someurl / somearea / edit / 0

Edit - http: // someurl / somearea / edit / 254

vs.

Buat - http: // someurl / somearea / create

Edit - http: // someurl / somearea / edit / 254

Apakah ada standar yang ditetapkan atau praktik terbaik dalam hal ini?

Saya tahu ini adalah detail kecil, tetapi saya pikir ini secara logistik penting.

Joshua Enfield
sumber
4
Saya pribadi berpikir bahwa tindakan Buat dan Edit terpisah adalah implementasi yang jauh lebih bersih (dan mungkin lebih mudah dikelola).
Adam Lear
1
Satu metode di DAL, dua untuk API jika itu masuk akal.
CaffGeek
Nah dari sudut pandang saya terpisah membuat dan mengedit datang secara alami ke MVC dan pergi dengan pendekatan itu memberikan banyak keuntungan menggunakan MVC sepenuhnya dan yang harus menjadi tujuan semua orang.
maz3tt

Jawaban:

5

Saya pasti akan mengatakan bahwa ada baiknya memisahkan Buat / Edit, jika tidak karena mematuhi prinsip tanggung jawab tunggal .

Orang dapat mengklaim bahwa ada SEO yang lebih baik dalam memiliki tindakan yang benar di url juga.

Tidak memisahkan keduanya juga akan membuat kode lebih sulit untuk unit test.

Seorang programmer baru membaca kode mungkin tidak akan menemukan kode yang sangat intuitif harus membuat objek dalam metode "edit", itu tidak masuk akal secara semantik. Namun saya bisa bersimpati dengan metode Simpan () di DAL.

Memikirkannya, saya tidak bisa benar-benar melihat manfaat dari memasukkan semuanya ke dalam metode Edit.

tidak ada
sumber
4

Saya biasanya lebih suka membuat satu Savemetode di DAL, tetapi sebenarnya menerapkan Create/ Edit/Delete secara terpisah.

Misalnya, Savemetode saya akan memeriksa Status Obyek, dan memanggil metode Buat / Edit / Hapus tergantung pada apa yang diperlukan

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

Ini memungkinkan saya untuk hanya memanggil satu metode umum untuk menyimpan objek apa pun, tetapi tetap membuat implementasi masing-masing (Buat, Edit, Hapus) dipisahkan.

Rachel
sumber
Bagaimana Anda bisa tahu itu sebuah penghapusan?
NoChance
Biasanya benda saya memiliki Stateproperti. Misalnya, mengklik Deletetombol akan menandai objek sebagai Dihapus, lalu panggilSaveChanges()
Rachel