Yang mana nama yang lebih baik untuk metode yang mengembalikan boolean?
IsSupportContentType
atau
CanSupportContentType
naming
naming-standards
Penengah
sumber
sumber
IsSupportedContentType
harus benar secara tata bahasa. (kecuali jika "mendukung tipe konten" bertindak sebagai kata benda, yang sepertinya tidak mungkin)supportsContentType
? Berikut ini adalah sepenuhnya dibaca:if (abc.supportsContentType("text/html"))
. "dapat mendukung" menyiratkan bahwa ada kondisi lebih lanjut untuk mendukung jenis konten.Jawaban:
Is vs Can
Menurut rekomendasi konvensi penamaan Microsoft , "Apakah" dan "Bisa" tidak apa-apa (dan demikian pula "Memiliki") sebagai awalan untuk Boolean.
Dalam bahasa Inggris biasa, "Is" akan digunakan untuk mengidentifikasi sesuatu tentang tipe itu sendiri, bukan apa yang dapat dilakukannya. Sebagai contoh,
IsFixed
,IsDerivedFrom
,IsNullable
semua dapat ditemukan dalam jenis CLR dan metode. Dalam semua kasus ini, "Is" diikuti oleh kata sifat .Sementara itu, "dapat" lebih jelas menunjukkan kemampuan, misalnya
CanEdit
,CanRead
,CanSeek
. Dalam setiap kasus ini, dapat diikuti oleh kata kerja .Karena "Dukungan" adalah kata kerja, saya pikir dalam kasus Anda
CanSupportContentType
lebih baik.Alternatif yang lebih pendek
Di sisi lain, konvensi mengatakan awalan adalah opsional. Terlebih lagi, itu agak curang untuk memasukkan jenis argumen dalam nama metode, karena pengembang dapat melihat jenis argumen di intellisense. Jadi Anda bisa memberi nama metode Anda
Supports
dan mendefinisikannya seperti ini:... yang lebih pendek dan masih dengan jelas mengomunikasikan tujuannya. Anda akan menyebutnya seperti ini:
Atau sebagai kompromi, mungkin ini yang terbaik:
sumber
if ( someClass.Supports(contentType) )
hasSupportedContentType
std::vector::empty()
. Dari namanya saja, apakah itu mengosongkan vektor? Atau apakah itu mengembalikan apakah vektor kosong? Sebenarnya yang terakhir, karena tugas sebelumnya dilakukan olehstd::vector::clear()
. Tetapi Anda harus secara umum membaca dokumen untuk memastikan. Sebagai contoh sebaliknya, QtQVector
lebih mudah dipahami dalam hal ini, karena metode pemeriksaan kekosongan adalahQVector::isEmpty()
.Perlu disebutkan bahwa awalan " harus " juga dapat digunakan. Menurut pedoman Apple , bukan hanya " bisa " dan " harus ", kata kerja modal secara umum dapat digunakan untuk menyebutkan fungsi yang mengembalikan boolean. Saya tidak bisa melihat banyak penggunaan " akan " tetapi " harus " bagus untuk kait saran-bertanya, seperti yang terlihat di reactjs:
sumber
WillCloseConnection
?is...
tetapi menggunakanshould...
beberapa nama argumen fungsi, tempat-tempat di mana boolean menunjukkan fungsi yang seharusnya mengubah sesuatu . Jika fungsi dapat opsional dekat dokumen, menyebut parameter pengendalian yangisClosed
akan akurat (itu tidak ditutup belum ) dan jadi kita akan menggunakanshouldClose
untuk menunjukkan bahwa ini adalah fungsi apa yang seharusnya dilakukan. (Contoh sewenang-wenang; kita mungkin tidak akan memiliki fungsi seperti ini, terutama karena menutup dokumen harus cukup berbobot untuk mendapatkan panggilan khusus).will...
dicadangkan untuk fungsi asinkron yang mengembalikan janji; jika fungsi yang dijelaskan dalam komentar saya sebelumnya sinkron, menggunakanwill...
akan tidak konsisten dengan penamaan kami.