Kısaltmalarla Java Adlandırma Sözleşmesi [kapalı]


218

Aşağıdaki Java sınıfı için doğru ad nedir: DVDPlayerveya DvdPlayer?


93
Kısaltmalardan nefret ediyorum. DigitalVersatileDiscPlayerileriye giden yol.
Tom Hawtin - tackline

7
Şaka için Tom'a +1. "Doğru", "standart" veya "en tipik" olarak yeniden yorumlanırsa bu soruyu yararlı buluyorum. Kabul edilen cevap harika!
Jon Coombs

6
Benim için bu tür kısaltmaları tek bir kelime olarak düşünmek mantıklı ve ben de konvansiyonu ve kullanımı takip ediyorum DvdPlayer.
Daniel

7
Stil kılavuzunda bunun hakkında söylenecek şeyler vardır: "Daha uzun bir sınıf adının parçasıysa, kısaltmayı sözcük olarak biçimlendirin." , DvdPlayergitmenin yolu da öyle . (Ve, Tom, "kısaltmaları kullanarak Kullanım bütün kelime ve önlemek kısaltma daha yaygın uzun biçimde daha kullanılmadığı sürece" daha yaygın "Digital Versatile Disc" :-) daha kullanılır ve ben "DVD" düşünmek
aioobe

Kesinlikle "Discus" demek istedin değil mi? :)
Ville Oikarinen

Yanıtlar:


237

Yanıt Java için tek bir standart olmadığı gibi görünüyor, .NET Framework Tasarım Yönergeleri bunu belirtmek isterim.

Şimdi konu dışı olduğum için beni çarpmadan önce, Java ve .NET Framework için sınıf adlandırma yönergelerinin oldukça benzer olduğunu unutmayın, bu da .NET yönergelerini ikna edici bir referans olarak yararlı kılar.

Genel kurallar

Her iki kılavuz da yalnızca kısaltma yaygın olarak bilindiği ve iyi anlaşıldığı zaman kısaltmaların kullanılmasını önermektedir. DVD veya XML bunun mükemmel örnekleridir, çünkü bunları hemen tanıyacak olsanız da, genişletilmiş sürümü tanımak biraz daha uzun sürer.

Kısaltmalar

.NET Framework Yönergeleri, tanımlayıcılarda yaygın olarak kullanılan iki 'ID' ve 'OK' kısaltmasının kullanılabilmesi dışında kısaltmaların (kısaltmaların aksine) kullanılmamasını önerir. Bir kısaltma Idkullanıldığında, bir camelCase tanımlayıcısının ilk sözcüğü (PascalCase tanımlayıcısının aksine) dışında her zaman karışık durum kullanılır.

Java'da bu kural sadece bir süre takip edilir. Bir göz atın yazımlar karışık nasıl getIDve getIdJCL içindedir. (Sayfayı aşağıya doğru kaydırın). In Java 8 sürümü olsa da, getIdPascalCase kongre günümüzde tercih edilir ima hangi, daha fazla kullanılır. Mümkün olduğunda kısaltmalardan tamamen kaçınmak en iyisidir.

Kısa Kısaltmalar

.NET Framework Yönergeleri, 'IO' gibi iki harfli kısaltmaların her iki harf için de aynı duruma sahip olması gerektiğini söylüyor. PascalCase tanımlayıcıları için (bir sınıf adı gibi), bir camelCase tanımlayıcısı için ( DBRateyerel bir değişken gibi) sahip olabilirsiniz ioChannel.

Bu kesinlikle Java'da geçerli bir kongre gibi görünüyor.

Uzun Kısaltmalar

.NET Framework yönergeleri, bir camelCase tanımlayıcısının ilk sözcüğü haricinde, üç harf veya daha uzun kısaltmaların PascalCase ve camelCase tanımlayıcıları için karışık harf kullanmasını önerir. Bu nedenle, bir sınıf adı XmlDocumentiçin yerel bir değişken adlandırılmış olabilir httpRequest.

Bu kural her zaman Java ile uygulanmaz. Dört karakterli kısaltmalar genellikle karışık harf kullanıyor gibi görünmektedir, ancak JCL bile üç harfli kısaltmalar ile tutarlı değildir. Çoğu 'URL', 'XML', 'SQL' ve 'DOM' gibi büyük harf gibi görünüyor, ancak 'Jar' gibi bazı istisnalar var.

Sonuç

Java için:

4+ harfli kısaltmalar için karışık harf kullanın. Standart kütüphane bunu yapar ve sadece mantıklıdır.

3 harfli kısaltmalar için JCL gibi tüm büyük harfleri kullanabilir veya .NET Framework'ün yaptığı gibi karışık harf kullanabilirsiniz. Her iki durumda da tutarlı olun.

2 harfli kısaltmalar için tüm büyük harfleri kullanın.

2 harfli kısaltmalar için Java'nın gerçekten bir standardı yoktur, ancak diğer isimlerle tutarlılık tüm büyük harflerin daha iyi görünmesini sağlamadığı sürece karışık bir durum kullanmanızı öneririm.


11
iyi koymak, iyi çaba!
Eliran Malka

1
Bunu beğendim, ancak 3- ve 2 harfli kısaltmalar için CAPS olması tutarlı değil. (Belki de çok saf bir insanım, ama pratik nedenlerden dolayı kabul edilen cevaba bakın. Artı, karışıklık faktörü var.)
Jon Coombs

1
@JCoombs: 2 harf için tutarsızlık IpAddress, birçok insan için korkunç görünen bir şeye benziyor. Şahsen Java kodu yazmam gerektiğinde, 3 harfli kısaltmalar için karışık durumla devam ediyorum, sadece iki harfi özel bir durum olarak bırakıyorum.
Kevin Cathcart

5
Sınıf adınızın birden fazla bitişik iki harfli kısaltması varsa ne olur? Ne yaparsanız yapın 'yanlış' görünecektir - USGFCharset, UsGfCharset, US_GFCharset ...
Kevin

3
Gerçekten iyi bir cevap. Ama şahsen .NET kurallarının kısaltmaların uzunluğuna ve bir kısaltma olup olmamasına bağlı olarak farklı adlandırma fikrini sevmiyorum. Bir kısaltmanın uzunluğunu kim önemsiyor ve kontrol ediyor? Ya da bir kısaltma ise? Adlandırma için battaniye kuralını tercih ederim. Sorun, hangi kuralı seçerseniz seçin, farklı kurallara sahip 3. taraf kitaplıkları kullanıldığında ortaya çıkar.
Amani Kilumanga

98

"Doğru" cevap yok. Diğer araçlarınızla daha iyi oynayan bir dizi uygulama ve kongre.

Bu yüzden tercih ederim DvdPlayer. Eclipse'de her kelimenin ilk harfine göre Ctrl+ Shift+ Tve sınıf seçebileceğinizden daha yararlıdır .

alternatif metin


19
oooo bu yararlı bir tutulma ipucu. Teşekkürler!
Peter Perháč

1
(+1) iyi bir ipucu. benim için soruyu cevaplayan :-)
Asaf

2
O sınıfı bulmak için sadece "SIO" yeterlidir.
finnw

7
Bu aynı zamanda Eclipse'nin başka bir yerinde de çalışır - örneğin otomatik tamamlama. 'MyDvdCoverImage' adlı bir yönteminiz / değişkeniniz mi var? - sadece mDCI Ctrl + Space yazın
teabot

3
Ayrıca, Ctrl + Space sysout gibi System.out.println gibi bazı kısayollar ayarlanmıştır. aynı şey (denemek) ve (için)
medopal

50

İkisini de vahşi doğada kullandıklarını gördüm ve Güneş bu DVDPlayertarzın peşinde. DvdPlayerYine de tercih ederim , çünkü bu şekilde olduğu gibi ardışık çoklu kısaltmalar olsa bile kelime sınırlarının nerede olduğu açıktır HTTPURLConnection.


3
Bu şekilde yazmak da daha hızlı.
Ateş Goral

6
"DVDPlayer" kelimesinin sınırlarını daha net hale getirdiğini düşünüyorum. "Dvd" bir sözcük değil, "DVD" ise "Dijital Çok Yönlü Disk" kelimelerinin kısaltmasıdır. Yani "DVD Oynatıcı" daki gerçek kelime sınırları "D", "V", "D" ve "P" 'de.
Greg Brown

19
@GregBrown: DVD delikli bir disktir, sizden başka kimse tam adını bilmiyor, ikisi de umurunda değil. Ve DvdPlayer'ı kullanmak çok daha pratiktir.
Igor Rodriguez

4
@GregBrown: Aslında en azından Eclipse'de daha pratiktir, burada deve kutusu tanıma kısaltmalarla bir acıdır: yani DvdPlayer ile DvdPlayer'ı seçmek için "DP" yazabilir ve Ctrl + 1 tuşlarına basabilirsiniz, ancak "DVDP" yazmanız gereken DVDPlayer vardı. Ve daha uzunsa daha da can sıkıcıdır. Kodumda UNESCOConnector olmasını istemiyorum. Her neyse, bu bir seçim meselesi.
Igor Rodriguez

22
Başka bir iyi örnek HTTPSID - HTTP SID veya HTTPS ID demek istedim ... Bu nedenle, anlamını daha iyi açıklamak için sırasıyla HttpSid veya HttpsId yazılmalıdır.
Oz Edri

37

Sınıfların bireysel örneklerini aşağıdaki şekilde tanımlamayı seviyorum:

Catalogue catalogue;
Person person;

Bu nedenle, eğer kullansaydım DVDPlayer, bunun bir örneği ne derdim? dVDPlayer? Bu yüzden DvdPlayersınıf adını seçerdim , böylece örneklere isim verebilirsiniz dvdPlayer.


16
Sorun nedir DVDPlayer dvdPlayer;?
azz

9
@DerFlatulator Sorun nedir? Nasıl gelirsen dvdPlayergel, geri döndüğünde anlayacaksın DvdPlayer.
maaartinus

5
@DerFlatulator: UpperCamelCase'den lowerCamelCase'e dönüştürürken bir otomasyon sorunu var: Hazırda Bekletme'yi bir yılan_kartına otomatikleştirirken sorun yaşadım: DvdPlayer -> dvd_playerama DVDPlayer -> d_v_d_player. DVDPlayer'ı dvd_player'a otomatikleştirmenin bir yolu yoktur.
pdem

3
@DerFlatulator: tamam, cevap için teşekkürler, bu durumda çalıştı. Ama hala "DvdPlayer" gösterimi ile ikna oldum: DVDRPGPlayer ne olacak ?, dvdrpgPlayer değil, dvdRpgPlayer dönüştürülmelidir.
pdem

2
Ayrıca alıcılarınızı ve ayarlayıcılarınızı da düşünün: örneğin JSP EL (ör .) İle kullanıldığında getDvdPlayer()daha iyi çalışır . Kısaltmalarda alıcılarınızı küçük harfle adlandırıyorsanız, tutarlılık ve öngörülebilirlik için sınıf adlarınızı aynı tutmak en iyisidir. getDVDPlayer()foo.dvdPlayer
daiscog

33

JavaSE sınıflarından, apache ortak alanlarından ve ilkbahardan bazı örnekler:

  • HttpURLConnection
  • HTTPAddress
  • UrlPathHelper
  • AopProxy
  • ISBNValidator

Yani - önemli değil.


3
Kabul. Kod tabanınızda tutarlı olun.
JARC

2
Tam olarak önemli bir şey olmasa da bunun önemli olmadığını söyleyemem. Bazıları genel olarak tercih edilen standartları çok yararlı bulmaktadır, ancak herkes bunları takip etmek konusunda tutarlı olmasa bile.
Jon Coombs

Ben tercih etmeliyiz SRSüzerinde SoftwareRequirementSpecification?
Shantaram Tupe


10

Diğerlerinin de belirttiği gibi, projeler arasında farklılık gösteren stil bir şey. Guava ve GWT gibi Google projeleri DvdPlayerstili tercih ediyor .

https://google.github.io/styleguide/javaguide.html#s5.3-camel-case


İçin daha genel Google kongre bağlantı DvdPlayerstili: google-styleguide.googlecode.com/svn/trunk/...
Stan Kurdziel


8

Gönderen güneş java docs :

Sınıf isimleri, her bir iç kelimenin ilk harfinin büyük harflerle yazılmasıyla isimler olmalıdır. Sınıf adlarınızı basit ve açıklayıcı tutmaya çalışın. Tam kelimeler kullanın-kısaltmalardan ve kısaltmalardan kaçının (kısaltma, URL veya HTML gibi uzun formdan çok daha yaygın olarak kullanılmadıkça).


14
Üst ya da deve kasası olması gerektiği hakkında hiçbir şey söylemiyor.
DD.

@DD. Ben vb DVD, MRI, Maga, gibi bazı rastgele iş özgü kelime için daha alakalı kısaltmalar için her kapaklar (HTTP, GET, vs) kullanmak "çok daha yaygın olarak kullanılan" puan, bana düşünüyorum
goelakash

3

DVDPlayerstandarttır, ancak DvdPlayernadir değildir.

Sen daha sık görmüyorsun getId. Muhtemelen ID'nin "Kimlik" kısalması olduğunu düşünüyorum. Aslında Kimlik Belgesinin baş harfleri.

HttpURLConnectiongenellikle karışık sözleşmenin bir örneği olarak verilir. Ancak, bir URL'de protokol adı olarak kullanılan "http" küçük harf olmalıdır (büyük harf genellikle kabul edilir).


2
Bunun gerçekten bir standart olduğunu düşünmüyorum, ama muhtemelen en yaygın olanı.
b.roth

Sun Java Kodlama Standardı IIRC'de. JLS olmasa da.
Tom Hawtin - tackline

7
HyperTextTransferProtocolUniformResourceLocatorConnection
flybywire

2
Çoğu kişi kimliği bir kısaltma olarak tanımlayıcı kullanmak eminim ... yani bir veritabanında tablo kimliği kimlik belgesi tablo tanımlayıcı atıfta.
DD.

9
DVDPlayer kesinlikle standart değildir; JDK bile buna yaklaşımlarında çok tutarsız.
Kevin Bourrillion

0

Burada "doğru" yoktur, sadece tercihler vardır.

Sun, "URL" ve "HTML" içeren sınıfları adlandırma biçiminde tutarlıdır, ancak javadocs'ta hem tüm büyük harfleri hem de deve durumunu kullanarak HTTP'yi görüyorum.

Şahsen, DvdPlayer'ı tercih ederim.


URL'lerde HTTP protokolü adının küçük harflerle yazılması gerektiğine inanıyorum (tarayıcılar tarafından büyük harflerle kabul edilebilir).
Tom Hawtin - çakmak hattı
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.