Bagaimana menulis case unta untuk kata-kata seperti "phonenumber", "motor", "wavelength", dll

75

Saya mengalami masalah dalam memahami cara menerapkan sintaks camelCase ke beberapa nama variabel saya.

Sebagai contoh, bagaimana saya harus menulis kata seperti "nomor telepon" dengan benar di case unta? Apakah itu phoneNumberatau phonenumber? Demikian pula dengan "nama pengguna", apakah itu usernameatau userName?

Saya pikir itu tidak beres dengan kasus unta seperti motorCycle, passWord, sunDay, setUpatau waveLengthkarena ini hanya satu kata masing-masing. Saya pikir itu bisa menjadi alasan mengapa itu disebut hashMaptetapi juga hashtabledalam kasus unta tanpa modal dalam kasus terakhir karena hashtable adalah satu kata sementara peta hash adalah dua kata.

Tetapi jika sepeda motor memiliki warna maka apakah itu motorcycleColorkarena sebuah kata digabungkan? Apakah itu benar atau harus itu phoneNUmber, waveLength, sunBlockdan bahkan sunDayuntuk Minggu minggu?

Mengapa misalnya adalah metode yang disebut getISOCountriessementara dikatakan HttpHeadersmisalnya tidak jelas apa yang menjadi huruf kecil jika kita memiliki metode seperti String camelCaseString = dog.toCamelCase()atau interface CamelCase.

Terkait: https://english.stackexchange.com/questions/889/when-should-compound-words-be-written-as-one-word-with-hyphens-or-with-spaces

Niklas Rosencrantz
sumber
7
Untuk kasus-kasus di mana sangat sulit bagi Anda untuk mengetahui apakah frasa dua kata adalah kata majemuk, pilihlah huruf besar dan patuhi itu. Seperti kebanyakan konvensi pengkodean, menjadi konsisten dalam satu proyek adalah yang paling penting.
Kevin
2
Pertanyaan yang bagus, saya selalu bertanya pada diri sendiri bagaimana menulis "nama file" (dan "nama file" yang salah). Saya pikir kata ini ditulis berbeda dari programmer ke programmer ...
Ray
3
@PacMani Anda dapat menikmati diskusi di sini !
Jason C
4
@ 909 Niklas saya akan menuliskan "nama" sepenuhnya sebanyak mungkin. Cukup gunakan "jalan" Jika ini adalah string, itu adalah nama kecuali jika itu merugikan atau membingungkan. usernameitu apa adanya, itu adalah tanda panggilan, bukan "nama pengguna", jadi ini lebih seperti sepeda motor daripada nama depan atau nama belakang (yang harus di-camelcased)
Peter Turner
2
@PeterTurner Beberapa programmer akan mengatakan bahwa itu streetharus kelas dan namesalah satu dari atribut / data anggota.
JAB

Jawaban:

173

Anda harus menggunakan huruf kapital setelah "di mana" biasanya ada spasi (ketika Anda akan menulis surat alih-alih kode sumber). Asumsi pertama Anda benar:

  • Itu adalah "sepeda motor", bukan "sepeda motor", jadi variabel Anda harus dinamai motorcycle, bukan motorCycle.
  • Ini adalah "peta hash", jadi Anda ikut hashMap, bukan hashmap.
  • "Minggu" adalah satu kata -> sunday, bukan sunDay.
  • Sementara "hari dalam seminggu" adalah dayOfWeek, tidak dayofweek.
oezi
sumber
4
Untuk apa nilainya, tim saya dan saya biasanya menggunakan hashmapsatu kata, meskipun ironisnya kami tidak melakukannya tree map. mengangkat bahu
corsiKa
1
Ya, sepeda motor sedikit seperti tepi (itu, pada kenyataannya, awalnya siklus motor, meskipun sekarang itu sesuatu yang berbeda); honeyBee(dan bukan honeybee, sebenarnya bukan "lebah madu" tetapi "lebah madu"), dan butterfly.
orome
3
Kasus non-adressed setUpadalah kasus tepi, itu kata tunggal, tetapi secara JUnithistoris memiliki inisialisasi fixture itu bernama setUp.
TC1
23
@ TC1 Sebenarnya, "setup" adalah kata benda , tidak pernah kata kerja. "Atur" bentuk tindakan yang benar. JUnitsudah benar, kita semua adalah ujung kasus. :)
Jason C
3
@JasonC Terima kasih, akhirnya masuk akal mengapa lawannya adalah tearDown: D
TC1
44

Bagian 1
Saya pikir apa yang membuat Anda tersandung adalah bahwa beberapa contoh Anda adalah kata majemuk , sedangkan yang lain tidak.

  • nomor telepon // bukan kata majemuk
  • sepeda motor // kata majemuk
  • panjang gelombang // kata majemuk
  • sunblock // kata majemuk
  • Minggu // kata majemuk *
  • warna motor // kata majemuk yang digunakan dengan kata non-majemuk.

Kata majemuk tidak mengikuti notasi kasus unta untuk kata kedua dalam kata majemuk.

Jadi motorcycledan tidak motorCycle.

Tetapi "nomor telepon" bukanlah kata majemuk dan itu akan mengikuti notasi kasus unta. yaitu phoneNumber.

Dan yang mengarah ke: motorcycleColor.

Jika saya tidak dapat mengingat apakah suatu kata benar-benar sebuah kata majemuk atau tidak, saya mencarinya di kamus untuk memastikan.

Bagian 2
Dua contoh Anda sedikit lebih rumit.

  • peta hash
  • tabel hash

Mereka rumit karena beberapa akan mengejanya sebagai "hashmap" dan "hashtable". Menurut kamus yang baru saja saya periksa, itu adalah kata-kata yang terpisah dan bukan kata majemuk. Jadi kasus unta yang benar adalah hashMapdan hashTable. Tidak setiap tim mengikuti konvensi itu, jadi Anda perlu bertanya kepada rekan setim Anda apa yang mereka sukai dan kemudian mematuhinya. Konsistensi lebih penting dalam hal ini daripada apa yang dikatakan kamus itu benar.

* Beberapa orang akan berpendapat bahwa hari Minggu adalah kata majemuk karena hari-hari lain dalam seminggu tidak, tetapi untuk keperluan pertanyaan ini saya akan menghindari masalah itu. Ini paling mudah untuk diperlakukan sebagai kata majemuk dan karena itu tidak ada unta.


sumber
6
Hari-hari lain dalam minggu itu semua senyawa juga: "Senin" <- hari bulan, Selasa <- hari Tiw, Rabu <- hari Woden, Kamis <- hari Thor, Jumat <- hari Frigg, Sabtu <- hari Saturnus
kevin cline
6
@kevincline: Bentuk nama-nama hari itu mungkin dianggap kuno sekarang, jadi jangan benar-benar menghitung untuk tujuan praktis. ... Kecuali Anda benar-benar menulis kode yang terlihat seperti if (currentDay == thorsDay) {...Hmm ... perpustakaan tanggal yang terlalu buruk tidak memiliki itu sebagai opsi pemformatan ketika Anda ingin mendapatkan nama lengkap dari hari dalam seminggu.
FrustratedWithFormsDesigner
15
@FrustratedWithFormsDesigner: intinya adalah bahwa dalam penggunaan modern, hari Minggu adalah kata majemuk dengan tingkat yang sama dengan hari Senin adalah: tidak sama sekali. Hanya kebetulan bahwa "Matahari" di "Minggu" dapat berdiri sendiri, sementara "Hari Bulan" disingkat menjadi "Senin"
kevin cline
6
Lebih baik lagi, gunakan nama yang lebih baik untuk variabel Anda daripada hashMap atau hashTable. Ini jalan licin yang mengarah ke garis kode yang luar biasa ini:HashMap hashMap = new HashMap();
Eric Andres
8

Seperti yang telah ditunjukkan orang lain, kasing unta digunakan ketika bergabung dengan kata-kata. Jangan gunakan kasing unta dalam satu kata bahasa Inggris. Masalahnya muncul dalam menentukan senyawa mana yang merupakan kata tunggal. Jika dibiarkan sendiri, programmer akan mengambil keputusan berbeda tergantung pada pengetahuan mereka tentang bahasa Inggris. Hal ini menyebabkan inkonsistensi dalam kapitalisasi, yang hampir sama menjengkelkannya dengan salah eja.

Untuk mencegah hal ini, programmer harus menggunakan referensi standar (misalnya dictionary.com ) ketika mereka tidak yakin tentang ejaan atau kapitalisasi. Meski begitu, jika konsistensi dalam penamaan penting untuk proyek Anda, tidak ada pengganti untuk tinjauan kode.

Memilih satu referensi untuk proyek Anda akan menyelesaikan sebagian besar argumen tentang penggunaan huruf besar dan ejaan. Ada beberapa kata majemuk seperti Hashtable yang tidak ada dalam kamus, tetapi ditulis dengan huruf tunggal di Java dan C # API. Anda akan ingin membuat keputusan di seluruh proyek tentang itu. Di Jawa, ini "HashMap" tetapi "Hashtable". IMO "Hashtable" jelas salah; itu tidak pernah muncul sebagai satu kata kecuali sebagai nama dalam API.

kevin cline
sumber
4

Cara paling mudah untuk membuat kasing unta adalah dengan penggambaran kata.

Contoh dari pertanyaan Anda:

  • nomor telepon: nomor telepon
  • sepeda motor: sepeda motor
  • minggu: minggu
  • panjang gelombang: panjang gelombang

Jika Anda tidak akan membaginya menjadi dua kata, Anda juga tidak harus menggunakan kasing unta di atasnya. Kalau tidak, Anda menggunakannya pada suku kata dan seberapa konyol tampilannya

  • auxIlIArY (Ini adalah kata dengan 5 suku kata; belum lagi saya tampak seperti omong kosong pada font non-monospaced / sans-serif).
Jeff Langemeier
sumber
5
nomor telepon bukan kata-katanya sendiri, masukkan ke google sebagai satu kata, dengan senang hati akan mencari semua yang memiliki "Nomor Telepon" bukan nomor telepon. Dan pengaturan bukan dua kata, juga kata sandi.
Jeff Langemeier
6
@JeffLangemeier Sebuah quibble yang sangat kecil: "setup" adalah kata benda, sementara "set up" adalah kata kerja. Oleh karena itu jika Anda memiliki objek yang menunjukkan bagaimana sesuatu diatur itu akan dipanggil setup, sedangkan jika Anda memiliki fungsi untuk mengatur sesuatu itu akan dipanggil setUp.
bdesham
2
@bdesham Saya menyadari itu, tapi saya hanya akan menjauh dari setUp, karena kata kerja yang lebih baik, kurang ambigu akan diinisialisasi, saya benar-benar lupa tentang versi pengaturan kata kerja.
Jeff Langemeier
1
Saya akan berpikir yang dimulai dengan "wa" bisa wavelengthatau waveLengthtergantung pada apakah nilai yang dimaksud berhubungan dengan kecepatan propagasi dibagi dengan frekuensi, atau apakah itu berkaitan dengan "panjang" (belum tentu jarak) dari beberapa jenis gelombang . Misalnya, variabel pustaka sintesis audio untuk jumlah sampel yang terkait dengan gelombang tidak akan wavelengthtetapi waveLength.
supercat
2
@kevincline: Di mesin sintesis audio, biasanya memiliki tabel gelombang yang berisi satu atau lebih sampel gelombang utuh. Saat pemutaran mencapai akhir tabel, pemutaran akan kembali ke awal (untuk mesin sederhana) atau ke beberapa titik lain dalam wave. Yang pasti, WaveLengthdengan sendirinya akan sedikit kabur dalam skenario apa pun kecuali yang paling sederhana [apakah mengacu pada ukuran buffer atau panjang bagian perulangan] tetapi kata-kata itu bisa muncul dengan baik dalam nama yang lebih panjang.
supercat
4

Di sinilah komplikasi dengan bahasa Inggris biasa menghalangi cara seseorang kemudian menyalahgunakan bahasa Inggris agar sesuai dengan aturan ruang putih token dalam konteks pemrograman.

Dari contoh kata yang Anda berikan, hampir semuanya adalah senyawa. Sunday tidak, karena sementara itu berasal sebagai senyawa, itu sudah begitu lama sehingga hampir tidak dapat dianggap sebagai sekarang, terutama karena didedikasikan untuk matahari lebih merupakan keingintahuan sejarah daripada bagian yang kuat dari agama dan budaya pandangan orang-orang yang berbahasa Inggris.

Dan dalam bahasa Inggris, tiga cara utama untuk menulis senyawa adalah terbuka (dengan spasi di antara dua kata), ditulis dgn tanda penghubung, dan ditutup (tanpa spasi atau tanda hubung di antara keduanya). Dan sementara ada beberapa aturan tentang tanda hubung senyawa terbuka dalam situasi tertentu, tidak ada banyak cara aturan tegas untuk mengetahui bentuk apa yang digunakan untuk senyawa tertentu di luar melihat apa yang dilakukan orang lain, dan masih ada saat-saat ketika Anda Akan menemukan dua atau bahkan ketiga bentuk ( pengocok telur , pengocok telur dan pengocok telur misalnya).

Di sini, nomor telepon hampir selalu ditulis terbuka, sehingga harus diperlakukan sebagai dua kata.

Dan ketika inter-capping untuk membentuk token, ruang atau tanda hubung dihapus dan kata kedua dan selanjutnya ditulis dalam judul-kasus, maka phoneNumberatau PhoneNumbersesuai untuk konvensi Anda.

Hal yang membuat phoneNumbertampak aneh mungkin adalah bahwa itu lebih umum diberikan seperti phonepada sebagian besar konteks, atau numberketika konteksnya adalah tentang koneksi telepon.

Jon Hanna
sumber
2

Asuransikan konsistensi dalam file kode.

Promosikan konsistensi dalam proyek kode.

Lebih suka konsistensi dalam perpustakaan kode.

Penggabungan kata-kata untuk mewakili konsep berubah ketika kita menjadi lebih akrab dengan aglutinasi yang diberikan .

Sebagai contoh...

  • 'set telepon' disingkat menjadi hanya 'telepon'
  • 'telepon' disingkat menjadi sekadar 'telepon'
  • 'nomor telepon' kadang-kadang dikontrak menjadi 'nomor telepon'
  • 'nomor telepon' segera menjadi 'nomor telepon'
  • 'Nomor telepon' sering lebih pendek menjadi 'telepon'
  • 'Ponsel', atau 'Ponsel' saja sudah umum digunakan saat ini
  • 'telepon rumah', dan 'telepon kantor' juga segera menjadi umum

Perhatikan bahwa pemeriksa ejaan StackExchange tidak dapat mengambil keputusan. 'Phonenumber' di akhir kalimat di atas baik-baik saja tetapi menandai yang di awal kalimat (dikapitalisasi atau tidak).

Sebanyak yang diinginkan semua orang di sana adalah "satu cara yang benar" untuk melakukan berbagai hal, ketika bicara soal bahasa, itu tidak mungkin terjadi. Pada saat Anda menyelesaikan proyek Anda, penggunaan mungkin akan berubah. Tentu saja pemahaman Anda akan berubah dan fungsionalitas metode / et.al. mungkin akan berubah juga. (Dalam hal ini, Anda mungkin harus mengubah nama dengan tepat.)

DocSalvager
sumber
-1

Dari perspektif yang sangat teknis (AS), di mana xxx-yyy-zzzz adalah apa yang biasanya Anda anggap sebagai "nomor telepon" bagian xxx secara tepat disebut sebagai kode area, bagian yyy secara tepat disebut sebagai pertukaran, dan zzzz secara tepat disebut sebagai nomor.

Karena tidak hanya "nomor telepon" bukan kata majemuk (belum), tetapi jika itu menjadi satu, itu akan salah merujuk sesuatu di luar maksud penciptanya, saya akan mengatakan bahwa sintaks camelCase akan memerlukan nomor telepon untuk setiap variabel yang merujuknya, tetapi jika Anda akan melakukan apa saja dengan sistem telepon yang sebenarnya, saya akan menggunakan phoneExchangeNumber untuk tujuh digit dan phoneACExchangeNumber untuk versi sepuluh digit.

MLT
sumber
1
ini tampaknya tidak menawarkan sesuatu yang substansial atas poin yang dibuat dan dijelaskan dalam jawaban sebelumnya yang diposting lebih dari 3 tahun sebelumnya
Agas