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.
sumber
Jawaban:
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.
sumber
Saya biasanya lebih suka membuat satu
Save
metode di DAL, tetapi sebenarnya menerapkanCreate
/Edit
/Delete
secara terpisah.Misalnya,
Save
metode saya akan memeriksa Status Obyek, dan memanggil metode Buat / Edit / Hapus tergantung pada apa yang diperlukanIni memungkinkan saya untuk hanya memanggil satu metode umum untuk menyimpan objek apa pun, tetapi tetap membuat implementasi masing-masing (Buat, Edit, Hapus) dipisahkan.
sumber
State
properti. Misalnya, mengklikDelete
tombol akan menandai objek sebagai Dihapus, lalu panggilSaveChanges()