Değişken Id veya ID olarak mı adlandırılmalıdır? [kapalı]


126

Bu biraz sersemletici, ancak bazı insanların kullandıkları Idşekilde olduğunu gördüm :

private int userId;
public int getUserId();

ve diğerleri şunları kullanır:

private int userID;
public int getUserID();

Bunlardan biri diğerinden daha iyi bir isim mi? Neden? Bunun büyük projelerde çok tutarsız bir şekilde yapıldığını gördüm. Bir standart belirlesem, çoğu insanın aşina olduğu şey nedir? Geleneksel standart hangisi?


40
Tutarlılık en önemli şeydir. Deve kılıfı veya altını çizer veya çizmeyin. Tutarlı ol.

38
Nasıl yaptıklarını görmek için dilinizin XML API'larına bakın. Java , sınıfları SAXParserve DOMExceptionadlarını, .NET gibi sınıfları adlandırır XmlDocument. Buna dayanarak, Java'da "ID", C #'da "Id" diyebilirim.
luiscubal

1
Ancak, büyük harf tanımlayıcıları, kurallara göre, Java'da statik alanlar için kullanılır, bu nedenle temel alan için "ID" adı en iyisi değildir. Ve orada tutarlılık geliyor ...
Danubian Sailor

8
Değişkenleri isimlendirir misiniz EGOve SuperEGO? Ben öyle düşünmedim. ;)
kojiro

4
Ne?! Tutarlılık? Öfke savaşı nerede? İşte böyle, kendimi kutsal deve vakası sözdizimi alevinin tutucusu olarak tayin ediyorum ve akriyomlar için her şeyi büyük harflerle yapmanın noobs için olduğuna karar veriyorum. Ayrıca, sıkılmış ve garip şeyler yapan kedileriniz olmadıkça tuvalet kâğıdının üstten yuvarlanmasını istemek de doğru olur; bu durumda alttan kaymaya ayarlanmış tuvalet kağıdının çözülmesinde çok zor zamanlar olur kedi sahipleri. Bu konuda neden karar aldığımı bilmiyorum. Sanki tuvalet yönünün kutsal alevinin kaleci Bob meşguldür.
Erik,

Yanıtlar:


56

Bu durumlarda uyulması gereken en önemli kural tutarlılıktır: Herkesin yaptığı gibi yapın.

Örneğin, nasıl yaptıklarını görmek için dilinizin XML API'larına bakın.

Java , SAXParser ve DOMException gibi sınıfları adlandırır , .NET, XmlDocument gibi sınıfları adlandırır .

Buna dayanarak, Java'da "ID", C #'da "Id" diyebilirim.

Bununla birlikte, Java EE 6'nın adında bir ek notu olduğunu gördüm @Id( belgelere bakın ), bu nedenle Java "Id" nin normal bir kelime olduğunu düşünüyor.


@ Id, bir değişken sınıf adını değil, bir açıklama sınıf adını gösterir. Yanlış örnek
00’a

3
SAXParser (ve neyse ki değildir) SimpleAPIforXMLParser (veya hatta SimpleApplicationProgramingInterfaceforExtesibleMarkupLanguageParser) olabilir. Her büyük harf kelimenin başlangıcıdır. Yani
java'da

2
@jwenting Sorun "id" nin bir kelime gibi mi yoksa iki kelime gibi mi değerlendirildiğini bulmaktır. @Idbunun tek bir kelime olduğunu ve değişken isminin "id" olacağını söylüyor.
luiscubal

Hayır. SAX, Id olmadığı halde bir kısaltmadır.
saat

8
IdC # (ve genel olarak .NET) kullanma konusunda haklısınız , ancak farklı bir nedenle. Kural, 2 harfli bir kısaltmanın tüm harflerini (örneğin IPAddress) büyük harfle yazıyor ve yalnızca daha uzun kısaltmaların ilk harfini ( XmlDocumentsizin verdiğiniz örnek gibi) büyük harf yapıyor . Ama Idve Oközellikle söz bu kuralın istisnaları vardır. Özet için, makalenin Capitalization Rules for Acronymsbölümüne Capitalization Conventionsbakın. Ancak Microsoft bile bu kuralı DbConnectionDBNull
çiğniyor

110

Tutarlılık kraldır; birini veya diğerini seçin, ancak her yerde tutarlı bir şekilde yapın.

Bu, ilk varyasyonu tercih ediyorum, çünkü camelCase'i ihlal etmiyor (bunu yapmak sadece bir tane değil, hatırlamak için iki stil kuralınız olduğu anlamına geliyor).

İki büyük harfler bazen nedeniyle kullanılan bu ancak bir kimlik gerçekten İd-entification sadece bir şeklidir.


18
Bir bilgisayar programı kimliğime erişmeye çalışıyor olsaydı bunu sevmem.
Blrfl

1
userIdOfSender
Sean McSomething

19
@SeanMcSomething: Ick. SenderUserId
Robert Harvey

5
Sizce "Id" nin kargaşanın nerelere girdiğini görmenin tercih edilen yolu olduğu konusunda hemfikir olsam da: Günlük konuşmada, "kimliğinizi görebilir miyim?" Gibi bir kısaltmamış gibi söylüyoruz.
500 - Dahili Sunucu Hatası

3
Deve durumundaki diğer kısaltmalara bakın. SoapProtocol var, SOAPProtocol değil. Kimlik kimlik belgesi için kısa olduğundan, deve durumunda neden istisnai bir şekilde ele alınması gerektiğini anlamıyorum. Bununla birlikte, programımdaki tutarsız bir şekilde kullanılan kullanıcı kimliğinden ve kullanıcı kimliğinden tutarlı bir şekilde kullanılan kullanıcı kimliğini tercih ederim.
Neil

76

TL; DR: .NET sınıf kitaplıkları bağlamında, Microsoft, Id kullanmanızı önerir. Bu biraz karşı sezgiseldir, çünkü izin verilen / önerilen bir kısaltmanın nadir bir örneğidir (kısaltmalar genellikle kaşlarını çattığında).

C # veya .NET sınıf kütüphane kuralları hakkında konuşuyorsak, Microsoft'un bazı oldukça iyi tanımlanmış adlandırma kuralları vardır. Çeşitli konularda birçok açıklama yapılarak iyi düşünülmüşlerdir - aslında her geliştirici Tasarım Yönergeleri bölümünün tamamını okumak için biraz zaman ayırmalıdır .

Kısaltmalar söz konusu olduğunda , genel kural şudur: iki harfli kısaltmalar için, bunları büyük harf tutma eğilimindesiniz (Pascal vakasının uygulanabilir olduğu yerde), örneğin IOStreambir sınıfın adı olabilir. Daha uzun bir kısaltma, sen küçük harf kısaltması, örneğin geri kalanı için XmlDocumentya HtmlParser. Bu aslında çoğunlukla belirsiz bir kuraldır (iki harfli kısaltmalar zincirlemediğiniz sürece bir kelimenin bittiği ve bir sonraki şeyin başladığı yerle ilgili bir karışıklık yoktur) ve buna çok çabuk alışırsınız.

Öyleyse, kimlik mi, kimlik mi? Microsoft’a göre, düşündüğün gibi olmayabilir:

Kısaltmalar , kısaltmaların tek bir kelimeyi kısalttığı için kısaltmalardan farklıdır . Örneğin, kimlik tanımlayıcı için bir kısaltmadır . Genel olarak kütüphane isimleri kısaltmaları kullanmamalıdır.

Tanımlayıcılarda kullanılabilecek iki kısaltma ID ve OK. Pascal-cased tanımlayıcılarında Id ve Ok olarak görünmeleri gerekir. Bir camel kaseli tanımlayıcıda ilk kelime olarak kullanılırsa, sırasıyla id ve ok şeklinde görünmeleri gerekir.

Her halükarda, bu ayrımın ne zaman kılavuzlarda görünmeye başladığından emin değilim, ancak birkaç yıl önce (3.0 / 3.5 civarında) sınıf kütüphanelerindeki genel isimlendirme eğilimi kimlikten id'ye gitti.


1
Bu genellikle takip ettiğim kılavuzdur. İd bir kısaltma olduğundan ve bir kısaltma olmadığından, her zaman 'Id' kullanmayı tercih ederim.
Toby,

ID becuase kullanıyorum sonra kongre bozuyor ve benzersiz olarak öne çıkıyor ve bunun ironisini seviyorum :)
RhysW

Microsoft'un yanlış olduğunu düşünüyorum. Kimlik Kimlik Belgesi için bir ilkçiliktir, kimlik için kısa değildir. (Pedantik olarak, kısaltmalar belirgindir.)
Tom Hawtin - tackline

@ TomHawtin-tackline İlginç bir noktaya değindiniz, ancak içeriğe bağlı olduğundan şüpheleniyorum. Person nesnesindeki bir IDNumber özelliği gibi bir şey çok anlamlı olur, ancak bir VehicleId'ın "Vehicle Identifier" yerine "Vehicle Identity Document" olarak okunması? Programlama bağlamlarında, tanımlayıcı, bir örneği benzersiz olarak tanımlayan herhangi bir şey için oldukça yaygın bir kelimedir ve burada daha uygulanabilir olduğunu savunuyorum.
Daniel B,

@DanielB Bilgisayar dillerinde, hatta SQL, "tanımlayıcı" genellikle bir sütunun adı gibi bir adı ifade eder. Tipik olarak "ident" olarak kısaltılır. Taşıt ilginç bir örnektir çünkü VIN şemaları oluşturulmuştur (Araç Kimlik Numaraları). Tipik bir programlama bağlamında, bir varlığın "dokümanı" bir sayıdır (zorlu bir yetenek bile olabilir).
Tom Hawtin - Takım çizgisi

15

Bazı kodlama sözleşmelerinin belgesinde çok iyi bir açıklama okudum. CamelCase her zaman kelime sınırlarını ayırt etmek kolaydır çünkü (karşılaştırma, kısaltmalar kullanılmalıdır XmlIdWriteriçin XMLIDWriter).


12
İşte kelime sınırlarını ayırt etmek için daha iyi bir fikir: gerçek kelime sınırları! xml_id_writer.
Kaz

4
@Kaz Eh, hah! Bununla birlikte, CamelCase geleneksel olarak bazı dillerde kullanılır ve bu gibi durumlarda alt çizgi kullanmak yerine kullanılabilir. Tutarlılık, daha önce de belirtildiği gibi kraldır.
gilden

1
CamelCase'i sadece bir dilin çekirdek kütüphanelerinin kullanması nedeniyle kullanmak tutarlılık değil, uygunluktur.
Kaz

3
@Kaz: Dükkanda savaşmak için kod sözleşmelerinden daha büyük savaşlar var.
Robert Harvey,

2

JavaScript’in varsayılan işlevinde gördüğümüz gibi getElementById (); Camel davasında id yazılmıştır ...

Alt çizgi ile kullanıyorsanız 'id' kullanın. Örnek: user_id

Farklı kelimeleri ayırt etmek için herhangi bir Alt çizgi içermeyen bir var isimlendirmek için 'Id' kullanın. Örnek: userId

Tek bir kelime değişkeni varsa, tam küçük harf olmalıdır, eğer birden fazla kelime var ise küçük Camel harfini kullanın. Örnek: thisIsExample

Ancak CAPS'ta 'ID' önerilmemektedir, çünkü genellikle CONSTANTS tanımlamak için tüm büyük harfleri kullanırız.


Üçüncü paragrafınızda, örneğin metninizle eşleşmiyor mu?
ruakh

@ ruakh thanx .. Rectified ..
Sukrit Gupta

0

İlk olarak, kısaltmaktan kaçının.

İkincisi, kısaltma çok iyi biliniyorsa, deve vakası kullanmanızı öneririm.

Çünkü bunun anlamını düşünmene gerek yok. sadece normal bir kelime gibi davran

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.