Di tim saya, kami bekerja erat dengan beberapa arsitek perangkat lunak. Mereka menyetujui semua keputusan desain proyek kami, melakukan beberapa tinjauan kode dll.
Proyek kami sebagian besar terdiri dari fungsi backend yang diimplementasikan dalam PHP menggunakan kerangka kerja Symfony 2. Jadi secara sintaksis, kode, konvensi penamaan dan struktur proyek terlihat hampir sama dengan apa yang akan terlihat seperti Java (Symfony 2 mendorong struktur seperti itu). Saya menyebutkan ini karena konvensi khusus Java juga berlaku dalam kasus kami (jika mungkin).
Baru-baru ini, mereka menyarankan sesuatu yang saya temukan sangat aneh: semua metode harus memiliki kata sambung dalam nama mereka misalnya getEntityOrNull
, setValueOrException
dll.
Konvensi penamaan seperti itu terasa sangat salah bagi saya, tetapi saya tidak dapat mengemukakan argumen konkret atau artikel / halaman online yang secara khusus menentang hal ini.
Satu-satunya hal yang saya pikirkan adalah:
- informasi tersebut harus ada dalam anotasi metode, seperti
@return
atau@throws
- penggunaan kata sambung ("dan", "atau" dll.) dalam nama metode biasanya menyarankan bahwa Prinsip Tanggung Jawab Tunggal tidak dihormati dengan benar
Apa beberapa argumen konkret lainnya yang menentang konvensi penamaan ini?
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
Ini bukan kasus untuk contoh yang Anda daftarkan, di mana hubungannya digunakan untuk memperjelas mekanisme yang digunakan untuk menangani kegagalan, bukan untuk menunjukkan bahwa ia dapat melakukan satu atau lain hal. Bahkan fungsi yang paling sempit dapat memiliki kondisi kegagalan yang sah, misalnya memunculkan tumpukan kosong.
Int32.TryParse
dan Int32.Parse
- keduanya mengurai string menjadi integer, tetapi yang pertama mengembalikan Boolean yang menunjukkan keberhasilan dan yang terakhir melempar pada kegagalan.
Try...
, ...OrNull
, ...OrDefault
. @EricLippert Itu bukan satu-satunya konvensi di .net. Pertimbangkan Single
vs. SingleOrDefault
, yang sangat dekat dengan OrNull
OP yang disarankan.