Prosedur tersimpan Konvensi penamaan? [Tutup]

11

Salah satu pengembang senior kami telah menyatakan bahwa kami harus menggunakan konvensi penamaan untuk prosedur tersimpan dengan gaya penamaan "objectVerb" seperti ("MemberGetById") alih-alih penamaan tipe "verbObject" ("GetMemberByID"). Alasan untuk standar ini adalah bahwa semua prosedur tersimpan terkait akan dikelompokkan bersama oleh objek daripada oleh tindakan.

Sementara saya melihat logika cara penamaan ini, ini adalah pertama kalinya saya melihat prosedur tersimpan yang dinamai demikian. Pendapat saya tentang konvensi penamaan adalah bahwa nama tersebut tidak dapat dibaca secara alami dan membutuhkan waktu untuk menentukan apa kata-kata yang diucapkan dan apa prosedur yang mungkin dilakukan.

Apa pendapat Anda tentang ini? Cara mana yang merupakan cara penamaan proc yang tersimpan yang lebih umum, dan apakah konvensi penamaan proc tersimpan apa yang telah Anda gunakan atau gunakan?

Chris
sumber
1
"nama tidak bisa dibaca secara alami"? Oleh siapa? Apa bahasa alami pertama Anda? Inggris? Atau sesuatu yang lain?
S.Lott
9
@ S.Lott - bagi saya itu terlihat seperti sesuatu yang Anda dengar di rawa di Degobah.
TZHX
1
Pertanyaan bagus! Memiliki beberapa standar lebih baik daripada tidak memiliki standar, tetapi beberapa orang yang mampu mengambil konsep ini lebih jauh dan menghasilkan standar yang baik. Sebagai contoh, Dijkstra telah menulis tentang mengapa jauh lebih masuk akal untuk mengindeks array dengan 0 sebagai elemen pertama daripada 1. developeronline.blogspot.com/2008/04/... Ini adalah topik yang tampaknya sepele, namun saya yakin butuh beberapa waktu untuk membuatnya. Demikian pula, Spolsky memiliki sistem yang bagus: joelonsoftware.com/articles/Wrong.html Beberapa orang yang berpikir di muka menghindari rasa sakit
Ayub
4
Saya akan mengatakan menyingkirkan semua prosedur yang tersimpan;)
Michael Brown

Jawaban:

10

Lihatlah seperti ini. Bagaimana metode Anda diatur dalam kode? Secara objek, dengan metode menggantung.

MyObject.GetById(int)
MyObject.Save()

Dengan memiliki procs yang disimpan Anda meniru penamaan itu, akan lebih mudah untuk melihat bagaimana mereka berhubungan dengan kode sumber Anda.

MyObjectGetById
MyObjectSave
CaffGeek
sumber
Poin yang bagus, tetapi SQL tidak inheren OO. Bahkan, itu SANGAT berbeda dengan Java / C # / etc. kode yang berinteraksi dengannya. Itu wajar untuk membiarkan SQL melakukan hal itu dan membiarkan Jawa melakukan hal itu. Jika kode harus dibuat, itu dapat dicapai dengan sedikit usaha.
Pekerjaan
4
Saya tidak berpikir OO menjadi pertimbangan di sini. Di atas hanyalah sebuah contoh bagaimana hal itu tidak sealami yang terlihat pertama kali menggunakan konvensi penamaan.
Mark Freedman
2
Jika dengan memiliki metode dalam kode menjadi "MyObject.GetById (int)" mengapa proc yang disimpan tidak juga disebut "MyObject.GetById"? Pengelompokan masih akan terjadi, dan sebuah titik akan memberikan pemisahan antara objek / tabel dan tindakan yang diinginkan.
Chris
1
@ Chris, saya tidak yakin Anda bisa menggunakan '.' dalam nama proc, tetapi tentu saja menggunakan kelompok objectVerb dengan cara yang sama seperti orang berpikir tentang mereka. Saya tidak berpikir untuk mendapatkan yang pertama, saya memikirkan apa yang saya inginkan, lalu bagaimana cara mengambilnya.
CaffGeek
1
@ Mark Freedman, bukan berarti itu harus OO, Anda mengelompokkan hal-hal dalam bahasa prosedural dengan cara yang sama, hanya saja mereka tidak dalam objek yang sebenarnya. Tetapi biasanya diawali dengan apa yang secara alami akan menjadi objek jika kode tersebut dikonversi. strCompare, strLen, dll, dll, objectAction
CaffGeek
6

Saya juga bisa melihat logikanya; itu mengelompokkan tindakan bersama oleh entitas. Namun, jika tindakan Anda selalu GET, PUT, dan DELETE perubahan dalam penamaan mungkin tidak terlalu penting. Saya melihat manfaat terbaik dari standar penamaan baru yang terjadi ketika Anda memiliki nama tindakan unik misalnya "AccountTransferMoney," hal semacam itu.

Yang paling penting adalah bahwa ada standar tunggal, dan itu diikuti oleh semua orang.

Robert Harvey
sumber
1
Berasal dari perusahaan yang tidak memiliki standar penamaan resmi (selain "awalan dengan sp"), memiliki standar adalah satu-satunya hal yang penting.
Glen Solsberry
5

Anda harus memutuskan apa penerbit yang lebih besar, menemukan procs yang Anda cari atau dengan cepat menguraikan artinya?

Jika kamu melihat:

memberGetID memberGetName memberGetThis memberListSomething memberDelete

Pada titik tertentu, begitu Anda telah menemukan 'anggota' Anda mengabaikannya dan pergi dari sana.

Lihat di buku telepon. Jika Anda ingin menemukan John Smith, adalah Smith, Dave Smith, John Smith, Robert

sangat sulit? Saya tidak memanggil orang dengan nama belakang mereka dan kemudian nama depan kecuali itu James Bond.

JeffO
sumber
1
+1 Saya suka pertanyaan ini dan jawabannya! Ini berkaitan dengan kegunaan, dan itu bisa menjadi sangat rumit dan menarik.
Pekerjaan
0

Alih-alih "objectVerb", Anda bisa menggunakan "namespace_verbObject", seperti Member_GetById.
Ini akan mengelompokkan prosedur berdasarkan namespace, dan masih menggunakan penamaan tradisional "kata kerja".

Abyx
sumber