“Telefon numarası”, “motosiklet”, “dalga boyu” vb. Kelimeler için deve kılıfı nasıl yazılır?


75

CamelCase sözdizimini bazı değişken isimlerime nasıl uygulayacağımı anlamakta sorun yaşıyorum .

Mesela, deve durumundaki "telefon numarası" gibi bir kelimeyi nasıl doğru yazmalıyım? Öyle mi phoneNumberyoksa phonenumber? Benzer şekilde "kullanıcı adı" ile, öyle usernameya userName?

Bunun doğru deve dava ile görünmüyor düşünüyorum gibi motorCycle, passWord, sunDay, setUpveya waveLengthbunlar sadece bir kelime her çünkü. Sanırım bunun adı da olabilir hashMapancak hashtableson durumda sermaye olmadan deve durumunda da, çünkü karma tablo bir kelimedir, karma harita iki kelimedir.

Ama eğer motosikletin rengi varsa, motorcycleColorbir kelime birleştiğinden beri olur mu? Bu doğru mu yoksa olması gerektiği phoneNUmber, waveLength, sunBlockve hatta sunDayhaftanın Pazar günü için?

Mesela neden denir getISOCountriesdiye söylenen HttpHeadersyöntem, mesela, String camelCaseString = dog.toCamelCase()ya da gibi bir yöntemimiz varsa, neyin küçük olduğu net değildir interface CamelCase.

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


7
İki kelimelik bir cümlenin bir bileşik kelime olup olmadığını söylemenin gerçekten zor olduğu durumlarda, bir büyük harf seç ve ona bağlı kal. Çoğu kodlama sözleşmesinde olduğu gibi, tek bir projede tutarlı olmak en önemli şeydir.
Kevin,

2
Harika bir soru, her zaman kendime "fileName" (ve yanlış "dosyaadı") yazmayı sordum. Bence bu kelime programcıdan programcıya farklı bir şekilde yazılmış ...
Ray

3
@PacMani Burada tartışmanın tadını çıkarabilirsiniz !
Jason C

4
@ 909Niklas "İsim" i mümkün olduğunca tamamen bıraktım. Sadece "sokak" kullanın. Bir dizge ise, zararlı veya kafa karıştırıcı olmadığı sürece bir isimdir. usernamene olduğu, bir çağrı işareti, "kullanıcının adı" değil, bu yüzden ilk isimden veya soyadıdan daha çok motosiklet gibidir (ki bu camelcased olmalıdır)
Peter Turner

2
@PeterTurner Bazı programcılar bunun streetbir sınıf olması ve nameniteliklerinden / veri üyelerinden biri olması gerektiğini söyler .
JAB

Yanıtlar:


173

Harfi, "normalde" bir boşluk olacağından (kaynak kod yerine bir harf yazdığınızda) sonra büyük harf kullanmalısınız. İlk varsayımınız doğru:

  • Bu nedenle değişken adlı olmalıdır bir "motosiklet" değil, bir "motosiklet", var motorcycle, değil motorCycle.
  • Eğer gitmek, böylece bir "karma haritası" var hashMap, değil hashmap.
  • "Pazar" bir kelimedir -> sundaydeğil sunDay.
  • İken "Haftanın günü" olacağını dayOfWeekdeğil dayofweek.

4
Ne hashmapolursa olsun, ekibim ve ben ironik bir şekilde olmasak da genelde tek bir kelime olarak kullanıyoruz tree map. omuz silkme
corsiKa

1
Eh, motosiklet biraz uçtan bir durum (aslında, aslında farklı bir şey olsa da, aslında bir motor döngüsü idi); honeyBee(ve değil honeybee, aslında "bal arısı" değil "bal arısı") ve butterfly.
orome

3
Adreslenmemiş setUpdurum, tek bir kelime olsa da, kenarda bir durumdur, ancak JUnittarihsel olarak adında bir fikstür başlangıcı vardır setUp.
TC1

23
@ TC1 Aslında, "kurulum" bir isimdir , asla bir fiil değildir. İşlemin doğru biçimini "ayarlayın". JUnithaklı mı, hepimiz son durum. :)
Jason C

3
@JasonC Teşekkürler, nihayet karşı tarafın neden olduğu mantıklı tearDown: D
TC1

44

Bölüm 1
Sanırım sizi tetikleyen, bazı örneklerin bileşik kelimeler olduğu , diğerleri ise değil.

  • telefon numarası // bileşik bir kelime değil
  • motosiklet // bileşik kelime
  • dalga boyu // bileşik kelime
  • güneş kremi // bileşik kelime
  • Pazar // bileşik kelime *
  • motosiklet rengi // bileşik olmayan bir kelimeyle kullanılan bileşik kelime.

Bileşik kelimeler, ikinci kelime için bileşik sözcükteki deve durumunun gösterimini takip etmez.

Yani bu motorcycledeğil motorCycle.

Ama "telefon numarası" bir bileşik sözcük değildir ve olurdu deve vaka gösterimini izleyin. yani phoneNumber.

Ve bu yol açar: motorcycleColor.

Bir kelimenin gerçekten bir bileşik kelime olup olmadığını hatırlayamıyorsam, kesin olarak sözlükte ararım.

Bölüm 2
Örneklerinden ikisi biraz daha zorlu.

  • karma harita
  • karma tablo

Zorlar çünkü bazıları "hashmap" ve "hashtable" olarak heceleyecek. Az önce kontrol ettiğim sözlüğe göre, bunlar ayrı kelimeler ve bileşik bir kelime değil. Yani doğru deve durumda hashMapve olacaktır hashTable. Her takım bu sözleşmeyi takip etmez, bu yüzden takım arkadaşlarınıza ne tercih ettiklerini sormanız ve sonra buna bağlı kalmanız gerekir. Tutarlılık bu durumda bir sözlüğün söyleyebileceğinden daha önemlidir.

* Bazıları Pazar günü, haftanın diğer günleri olmadığı için karma bir kelime olarak tartışacaklar, ancak bu sorunun amaçları için bu konuyu gözden geçireceğim. Bileşik bir kelime olarak ele almak en kolay yöntemdir ve bu nedenle deve durumu yoktur.


6
Haftanın diğer günleri de hepsi bileşikti: "Pazartesi" <- ay günü, Salı <- Tiw'in günü, Çarşamba <- Woden'in günü, Perşembe <- Thor'un günü, Cuma <- Cuma günleri, Cumartesi <- Saturn günü
kevin cline

6
@kevincline: Günlerin isimlerinin bu biçimleri muhtemelen şimdi arkaik sayılıyor, bu yüzden pratik amaçlar için pek sayılmaz. ... if (currentDay == thorsDay) {...Hmm gibi görünen bir kod yazmazsanız ... çok kötü tarih kütüphaneleri haftanın gününün tam adını almak istediğinizde biçimlendirme seçeneği olarak kullanmazlar.
FrustratedWithFormsDesigner

15
@FrustratedWithFormsDesigner: Buradaki nokta, modern kullanımda Pazar gününün Pazartesi olduğu kadar aynı bir bileşik kelime olduğu anlamına geliyor: hiç de değil. Bu sadece "Pazar" daki "Güneş" in tek başına durabileceği bir kaza, "Ay
Bayramı

6
Daha da iyisi, değişkenleriniz için hashMap veya hashTable'dan daha iyi adlar kullanın. Bu harika kod satırına götüren kaygan bir yol:HashMap hashMap = new HashMap();
Eric Andres

8

Diğerlerinin de belirttiği gibi, kelimeler birleştirilirken deve kılıfı kullanılır. Deve kutusunu tek bir ingilizce kelime içinde kullanmayın. Sorun, hangi bileşiklerin tek tek kelimeler olduğunu belirlemede ortaya çıkar. Kendilerine bırakılan programcılar, İngilizce bilgisine bağlı olarak farklı kararlar alacaktır. Bu, büyük harf kullanımında neredeyse yanlış yazımlar kadar sinir bozucu olan tutarsızlıklara yol açmaktadır.

Bunu önlemek için, programcılar yazım veya büyük harf kullanımı konusunda emin olmadıklarında standart bir referans (örn. Dictionary.com ) kullanmalıdır. Öyle olsa bile, adlandırmadaki tutarlılık projeniz için önemliyse, kod incelemesinin yerine geçemez.

Projeniz için tek bir referans seçmek, büyük harfle ve yazımla ilgili çoğu argümanı çözecektir. Sözlüklerde olmayan, fakat Java ve C # API'lerinde tek kelimeler olarak büyük harf kullanılan Hashtable gibi bazı bileşikler vardır. Bunlar hakkında proje çapında bir karar vermek isteyeceksiniz. Java'da, "HashMap" ama "Hashtable" dır. IMO "Hashtable" açıkça yanlıştır; bir API’deki bir ad dışında, asla tek bir kelime olarak görünmez.


4

Deve davası yapmanın en basit yolu, kelime açıklamasıdır.

Sorunuzdan örnekler:

  • telefon numarası: phoneNumber
  • motosiklet: motosiklet
  • pazar: pazar
  • dalga boyu: dalga boyu

Eğer iki kelimeye ayırmazsan, deve kasasını da kullanmamalısın. Aksi takdirde, hecelerde kullanıyorsunuz ve bu ne aptalca görünüyor

  • YARDIMCI (Bu 5 heceli bir kelimedir; monospaced olmayan / sans-serif yazı tipleri üzerindeki saçmalığa benzemekten bahsetmiyorum bile).

5
telefon numarası kendi sözcüğü değil, tek bir kelime olarak google'a yazdı, telefon numarası olmayan "Telefon Numarası" olan her şeyi mutlu bir şekilde arayacak. Ve kurulum iki kelime değil, şifre de değil.
Jeff Langemeier,

6
@JeffLangemeier Çok küçük bir kelime oyunu: “Kur” bir isimdir, “Kur” bir fiildir. Dolayısıyla, bir şeyin nasıl kurulduğunu temsil eden bir nesneniz varsa, bunun adı verilir setup; bir şeyi kurma işlevi varsa, denir setUp.
bdesham

2
@bdesham Bunu anlıyorum, ancak daha iyi, daha az belirsiz bir fiil başlatılacağı için kurulumdan uzak dururum, çünkü kurulumun fiil versiyonunu tamamen unuttum.
Jeff Langemeier,

1
I "wa" ile başlayan biri olabilir ya düşünür wavelengthveya waveLengthsöz konusu değer olmasına bağlı olarak dalganın bir tür "uzunluğu" (mutlaka mesafe olan) için frekans bölünür yayılma hızının ile ilgilidir ya da ilgili olup olmadığı . Örneğin, bir sesle sentezleme kütüphanesinin bir dalga ile ilişkili örnek sayısı için değişkeni wavelengthdeğil waveLength.
supercat

2
@kevincline: Ses sentez motorlarında, bir dalganın bir veya daha fazla tam örneğini içeren dalga tablolarına sahip olmak yaygındır. Oynatma tablonun sonuna ulaştığında, başa (basit motorlar için) veya dalgadaki başka bir noktaya geri döner. Emin olmak için, WaveLengthkendisi en basit senaryolar ancak herhangi biraz muğlak olacağını tarafından [tampon boyutu veya döngü bölümün uzunluğuna işaret etmez] ama sözcükler gayet iyi uzun adıyla görünebilir.
supercat

4

Bu, düz İngilizce ile ilgili bir komplikasyonun, daha sonra İngilizceyi, programlama bağlamlarında belirteçlerin beyaz alan kurallarına uyması için nasıl kötüye kullandığı yoluna girdiği yerdir.

Verdiğiniz örnek kelimelerin neredeyse hepsi bileşik. Pazar , bir bileşik olarak ortaya çıktığı gibi değil, o kadar uzun zaman önce, artık güneşe adanmış olması, dini ve kültürel alanın güçlü bir parçasından daha tarihi bir merak olduğu için, şimdi çok nadir olduğu düşünülebilir. İngilizce konuşan insanlara genel bakış.

Ve İngilizce'de, bir bileşik yazmanın üç ana yolu açık (iki sözcük arasında boşluk bırakarak), tirelenir ve kapalıdır (ikisi arasında boşluk ya da kısa çizgi olmadan). Ve belirli durumlarda açık bileşiklerin hecelenmesiyle ilgili bazı kurallar olsa da, başkalarının ne yaptığını görmenin ötesinde, belirli bir bileşik için hangi formun kullanıldığını bilmek için kesin kuralların olması pek mümkün değildir. 'iki hatta üç formları (bulacaksınız eggbeater , helikopter ve yumurta çırpıcı örneğin).

Burada, telefon numarası hemen hemen her zaman açık yazıldığından, iki kelime olarak ele alınmalıdır.

Ve bir belirteç oluşturmak için kapaklar arasında boşluk veya kısa çizgi kaldırılır ve ikinci ve sonraki sözcük, başlık durumunda, dolayısıyla phoneNumberveya PhoneNumberkongre için uygun şekilde yazılır .

phoneNumberGarip görünen şey muhtemelen daha sık olarak sadece phoneçoğu bağlamda olduğu gibi veya numberbağlamın bir telefon bağlantısıyla ilgili olduğu zaman veriliyor olmasıdır.


2

Kod dosyasında tutarlılık sağlayın.

Kod projesi içinde tutarlılığı arttırın.

Kod kütüphanesinde tutarlılığı tercih edin.

Kavramları temsil etmek için kelimelerin birleştirilmesi, belirli bir aglütinasyona daha aşina hale geldikçe değişir .

Örneğin...

  • 'telefon seti' sadece 'telefon' olarak kısaltıldı
  • 'telefon' sadece 'telefon' olarak kısaltıldı
  • 'telefon numarası' bazen 'telefon numarası' ile anlaşıldı
  • 'telefon numarası' yakında 'telefon numarası' oldu
  • 'telefon numarası' genellikle 'telefona' kısaldı
  • 'cep telefonu' veya sadece 'hücre' bugün yaygın olarak kullanılıyor
  • 'homephone' ve 'workphone' yakında da yaygın olabilir

StackExchange yazım denetleyicisinin kararını veremediğini unutmayın. Yukarıdaki cümlenin sonundaki 'Telefon Numarası' iyiydi ancak cümlenin başında bir harf yazıyor (büyük harf veya değil).

Herkesin dilediği gibi, dil yapmak söz konusu olduğunda, asla yapamayacağınız şeyler yapmak için "tek bir yol" olmasını istiyor. Projenizi bitirdiğinizde, kullanım muhtemelen değişmiş olacak. Elbette anlayışınız değişmiş olacak ve yöntemin / et.al'ın işlevselliği değişmiş olacak. muhtemelen de değişmiş olacak. (Bu durumda, muhtemelen adı uygun şekilde değiştirmelisiniz.)


-1

Kesinlikle teknik (ABD) bir bakış açısına göre, xxx-yyy-zzzz normalde "telefon numarası" olarak düşündüğünüz şeydir, xxx kısmı alan kodu olarak doğru bir şekilde belirtilir, yyy kısmı uygun olarak değişimi ve zzzz düzgün bir şekilde sayı olarak adlandırılır.

Sadece "telefon numarası" sadece bir bileşik kelime değil (henüz) değil, bir tane olursa, yaratıcısının amacının dışında bir şeye yanlış başvuracaktır, camelCase sözdiziminin başvuruda bulunan herhangi bir değişken için phoneNumber isteyeceğini söyleyebilirim, ancak gerçek telefon sistemiyle bir şey yapacaksınız, yedi basamaklı için phoneExchangeNumber ve on basamaklı sürümler için phoneACExchangeNumber öğesini kullanırdım.


1
bu, önceki 3 yıl içinde yayınlanan bu önceki cevabın üzerinde belirtilen ve açıklanan önemli hususlar sunmuyor gibi görünüyor
gnat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.