"A", "an", dan "the" dalam nama metode dan fungsi: Apa pendapat Anda? [Tutup]

16

Saya yakin banyak dari kita telah melihat nama metode seperti ini pada satu titik atau yang lain:

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

Yaitu, nama metode yang juga kalimat bahasa Inggris yang benar secara tata bahasa, dan memasukkan kata-kata ekstra murni untuk membuatnya dibaca seperti prosa. Secara pribadi, saya bukan penggemar nama metode "literal" seperti itu, dan lebih suka succint, sambil tetap sejelas mungkin. Bagi saya, kata-kata seperti "a", "an", dan "the" hanya terlihat canggung dalam nama-nama metode, dan itu membuat nama-nama metode tidak perlu panjang tanpa benar-benar menambahkan sesuatu yang berguna. Saya lebih suka nama metode berikut untuk contoh sebelumnya:

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

Dalam pengalaman saya, ini jauh lebih umum daripada pendekatan lain untuk menuliskan nama-nama yang lebih panjang, tetapi saya telah melihat kedua gaya dan ingin tahu apa yang dipikirkan orang lain tentang kedua pendekatan ini.

Jadi, apakah Anda berada di "nama metode yang bertuliskan seperti prosa" camp atau "nama metode" yang mengatakan apa yang saya maksud tetapi membacakan dengan keras seperti kamp terjemahan bahasa asing ke bahasa Inggris yang buruk?

Mike Spross
sumber
7
Saya belum pernah melihat metode dengan nama seperti WriteTheRecordToTheDatabase. Jika seseorang memeriksa ini, mereka akan diajak bicara serius.
Tim Robinson
13
" Please"? Wow
konfigurator
3
Saya hanya ingin menambahkan bahwa wordpress memiliki fungsi pembantu templat seperti "the_contents ()," "get_the_post ()," dll. Ini mengganggu saya.
Carson Myers
1
@Carson Myers Hah, itu contoh dunia nyata yang sempurna dari ini. Saya pasti telah menekan kenangan terakhir kali saya melihat kode WordPress :-)
Mike Spross

Jawaban:

21

Saya akan setuju bahwa metode prosa mengisap dengan satu pengecualian:

Kasus Uji Satuan

Ini umumnya tidak pernah dipanggil dalam kode Anda dan muncul dalam laporan pengujian. Karena itu, sangat berguna untuk melakukan pembacaan dengan prosa yang lebih banyak:

  • MenambahkanPelangganOrder GagalKetika PelangganIdIsInvalid: Gagal
  • OutOfBoundsHargaReturnAnAnError: Lulus
  • CanDeleteAnEventFromASeason: Lulus

Bahkan ini harus dilakukan dengan hemat, tetapi saya bisa melihatnya sebagai setidaknya satu kasus di mana penambahan gramatikal dapat membuatnya sedikit lebih mudah untuk mengekspresikan apa yang berlalu dan apa yang gagal. Ini, tentu saja, kecuali bahasa / kerangka kerja Anda menyediakan mekanisme yang baik untuk deskripsi-tes dalam pembacaan tes selain nama metode, dalam hal ini abaikan juga yang ini.

Fishtoaster
sumber
1
Memberi +1 untuk contoh yang baik di mana nama metode prosa sebenarnya dapat bermanfaat. Ini lucu, karena sekarang Anda menyebutkannya, saya telah melakukan ini secara khusus ketika menulis nama-nama unit test, dan secara khusus saya tahu apa yang dilakukan tes ketika saya menjalankannya nanti.
Mike Spross
Itu berguna, dan cocok dengan MethodUnderTest_Condition_ExpectedBehaviour konvensi penamaan unit test yang disarankan Roy Osherove . misalnya AddOrder_WithInvalidCustomerId_Fails, CreateItem_WithOutOfBoundsPrice_ReturnsErrordanDeleteEvent_EventExistsInSeason_Succeeds
StuperUser
@StuperUser untuk perilaku yang diharapkan, Anda telah benar-benar memberikan hasil tes yang diharapkan dan karenanya saya tidak tahu metode apa yang seharusnya dikembalikan.
ediblecode
@danRhul Fair point, saya tidak cukup jelas; .._AdditionFailsdan .._DeletionSucceedsharus lebih baik. Saya memang memasukkan hasil metode, tetapi seperti yang Anda tunjukkan mereka bisa bingung dengan terminologi pengujian lulus / kegagalan.
StuperUser
10

Mengutip Lawrence dari Office Space ...

Tidak, tidak, kawan, saya benar-benar percaya bahwa jika seseorang yang bekerja dengan saya di sini bernama fungsi 'UploadTheFileToTheServerPlease', dia akan mendapatkan ... tendangannya, kawan.

GrandmasterB
sumber
10

Nama "panjang" seperti itu tidak terdengar seperti prosa . Ketika sendirian — mungkin, tetapi disertai dengan sisa kode, mereka hanya membuat lebih berantakan. Coba lihat:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

Ini bukan teks bahasa Inggris yang valid, dan dalam bahasa pemrograman apa pun tidak akan terlihat seperti itu. Jadi tidak ada gunanya menghabiskan byte untuk artikel.

P Shved
sumber
1
Sebuah contoh bagus mengapa saya sangat tidak menyukai pendekatan ini! Ketika saya menulis pertanyaan, saya hanya berfokus pada nama metode sendiri yang terdengar seperti prosa, tetapi saya setuju dengan Anda: cukup sulit untuk membuat kode panggilan benar-benar dibaca seperti prosa, jadi tidak ada gunanya membuat nama fungsi individu terdengar seperti ditulis Inggris.
Mike Spross
3
Saya sarankanbool ResultOfTheGentlyUploadOfTheFileToTheServer
Wizard79
Saya telah bekerja dengan seseorang yang menciptakan standar perusahaan di mana 'theVariable' dan 'aMethod' harus diikuti. Orang yang sama ini juga suka memiliki semua baris kode berbaris secara vertikal.
Chris
7

Dari perspektif pemrogram, "UploadFileToServer" lebih masuk akal dan lebih mudah dibaca dan dipahami daripada "UploadTheFileToTheServerPlease".

Lebih dari tata bahasa Inggris, keterbacaan dan pemahaman lebih penting dalam pemrograman!

Gopi
sumber
Sepenuhnya setuju .. jika saya membaca kode yang ditulis dalam gaya pertama selama beberapa hari, saya yakin itu akan membuat saya gila ..
Naveen
@Naveen: Saya sudah bekerja dengan kode seperti ini, dan pada kesempatan pertama saya mengganti nama semua metode itu. Dan aku tidak yakin apakah itu hanya pengembang atau tidak, tapi saya pikir ada kecenderungan untuk membuat fungsi melakukan beberapa hal ketika Anda menulis mereka sebagai kalimat, yaitu UploadTheFileAndProcessItAndEmailTheOrdersToTheCustomers, meskipun mudah-mudahan tidak ada yang cukup buruk bahwa dalam kehidupan nyata.
Mike Spross
@ Mike Kemudian saya akan refactor metode untuk 2 metode yang berbeda;)
Gopi
2

Mengingat berapa banyak kesalahan ketik fitur hidup saya, saya akan berakhir dengan

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

Serius, saya bahkan akan melihat apa nama kelas saya juga. Jika kelas saya disebut "File", saya mungkin hanya akan pergi dengan

*UploadToServer
*DownloadFromServer

Jadi itu akan terjadi

   File file = new file;
   file.UploadtoServer(ServerAddress);

Hanya contoh sepele, tapi mudah-mudahan itu cukup ilustratif.

MIA
sumber
Hehe. Saya sebenarnya telah melihat "Teh" merangkak ke dalam nama metode mengikuti pola penamaan "seperti bahasa Inggris". Adapun poin kedua Anda: Saya sepenuhnya setuju, redundansi dalam nama metode adalah satu lagi kesal hewan peliharaan saya ( File.UploadFileToServer... ugh).
Mike Spross
0

Saya pribadi tidak peduli. Saya telah melihat mereka dan mereka tidak mengganggu saya. Saya bahkan tidak memikirkannya sampai programmer lain terus mengoceh tentang mereka. Saya menemukan itu mengejutkan bahwa seseorang akan sangat peduli tentang sesuatu yang sangat penting. Maksud saya dia benar-benar marah tentang hal itu. Tapi itu awal karir saya, sekitar 11 tahun yang lalu, dan sejak itu saya menemukan bahwa pengembang marah tentang hal-hal kecil sebenarnya cukup umum. Itu sebabnya manajer pengembang dibayar dengan sangat baik. Mereka harus berurusan dengan pengembang setiap hari.

Dan saya lebih suka melihatnya daripada "UL_FlToSrv".

ElGringoGrande
sumber