Paket adlarında kelimeler nasıl ayrılmalıdır? Aşağıdakilerden hangisi doğrudur?
com.stackoverflow.my_package
(vurgulamak)com.stackoverflow.my-package
(Kısa çizgi)com.stackoverflow.MyPackage
(CamelCase)
Genel standart nedir?
Paket adlarında kelimeler nasıl ayrılmalıdır? Aşağıdakilerden hangisi doğrudur?
com.stackoverflow.my_package
(vurgulamak)com.stackoverflow.my-package
(Kısa çizgi)com.stackoverflow.MyPackage
(CamelCase)Genel standart nedir?
Yanıtlar:
Resmi adlandırma sözleşmeleri belgesinin önerileri şunlardır:
Paketler
Benzersiz bir paket adının önek her zaman tüm-küçük harf ASCII harflerle yazılır ve üst düzey alan adlarının biri olmalıdır, şu anda
com
,edu
,gov
,mil
,net
,org
, veya ülkeleri tanımlayan İngiliz iki harfli kodlarından biri ISO belirtildiği şekilde Standart 3166, 1981.Paket adının sonraki bileşenleri, kuruluşun kendi dahili adlandırma kurallarına göre değişir. Bu tür kurallar, belirli dizin adı bileşenlerinin bölüm, departman, proje, makine veya oturum açma adları olduğunu belirtebilir.
Örnekler
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Özellikle, üst düzey alan adı önekini izleyen herhangi bir şeyin yukarıdaki belge tarafından belirtilmediğini unutmayın. JLS ayrıca aşağıdaki örnekleri vererek bunu kabul eder:
com.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
Aşağıdaki alıntı da konuyla ilgilidir:
Bazı durumlarda, internet etki alanı adı geçerli bir paket adı olmayabilir. İşte bu durumlarla başa çıkmak için önerilen bazı sözleşmeler:
- Etki alanı adı bir tire işareti veya tanımlayıcıda izin verilmeyen başka bir özel karakter içeriyorsa, onu alt çizgiye dönüştürün.
- Ortaya çıkan paket adı bileşenlerinden herhangi biri anahtar sözcükse, bunlara alt çizgi ekleyin.
- Sonuçta elde edilen paket adı bileşenlerinden herhangi biri bir rakamla veya tanımlayıcının başlangıç karakteri olarak izin verilmeyen başka bir karakterle başlıyorsa, bileşenin önüne bir alt çizgi eklenir.
Üçü de sözleşmeler değil.
Kullanın com.stackoverflow.mypackage
.
Paket adları deve muhafazası veya alt çizgi veya kısa çizgi paket adlandırma kuralına uymaz .
Ayrıca, Google Java Stil Kılavuzu tamamen aynı (yani com.stackoverflow.mypackage
) kuralını belirtir :
5.2.1 Paket adları
Paket adlarının tümü küçüktür, ardışık kelimeler basitçe bir araya getirilir (alt çizgi içermez). Örneğin
com.example.deepspace
, değilcom.example.deepSpace
veyacom.example.deep_space
.- Google Java Stil Kılavuzu: 5.2 Tanımlayıcı türüne göre kurallar: 5.2.1 Paket adları .
Herkes alt çizgi _ kullanabilir (tamam)
Kimse hipen kullanmamalı - (Kötü uygulaması)
Hiç kimse paket adlarında büyük harf kullanmamalıdır (Kötü uygulama)
NOT: Burada "Kötü Uygulama" teknik olarak kullanmak için izin verilir, ancak geleneksel olarak yazmak için iyi bir şekilde değil içindir.
Resmi adlandırma kuralları bu kadar katı değil, önek ( com
örneğin örneğiniz) hariç deve davası gösterimini 'yasaklamıyorlar' .
Ama şahsen büyük harflerden ve tirelerden , hatta rakamlardan kaçınırım . Ben com.stackoverflow.mypackage
de Bragboy'un önerdiği gibi seçerdim.
('-' tireleri paket adlarında yasal değildir)
DÜZENLE
İlginç - dil belirtimi, adlandırma kuralları hakkında da söylenecek bir şey var.
In Bölüm 7.7 Benzersiz Paketi Adları biz (CamelCase notasyonu Tamam olur böylece) büyük harflerle oluşmaktadır paket adlarıyla örneklere bakın ve bir alt çizgi ( "mary-lou" -> "mary_lou") tarafından hyphonation yerine önermek ve önek java alt çizgi içeren anahtar kelimeler ("com.example.enum" -> "com.example._enum")
Paket adlarındaki büyük harfler için daha fazla örnek 6.8.1 Paket Adları bölümünde bulunabilir .
Alt çizgiler paket adlarında çirkin görünür. Değer için, üç veya daha fazla kelimeden oluşan isimler söz konusu olduğunda baş harflerini kullanıyorum (örneğin:) com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
ve sonra paketin amacını belgeliyorum package-info.java
.
Paket adındaki kelimelerin birleştirilmesi çoğu geliştiricinin yapmadığı bir şeydir.
Gibi bir şey kullanabilirsiniz.
com.stackoverflow.mypackage
JLS Ad Beyanına bakın
com.stackoverflow.my.package