Bagaimana seharusnya satu kata terpisah dalam nama paket? Manakah dari berikut ini yang benar?
com.stackoverflow.my_package
(menggarisbawahi)com.stackoverflow.my-package
(tanda hubung)com.stackoverflow.MyPackage
(CamelCase)
Apa standar umum?
Bagaimana seharusnya satu kata terpisah dalam nama paket? Manakah dari berikut ini yang benar?
com.stackoverflow.my_package
(menggarisbawahi)com.stackoverflow.my-package
(tanda hubung)com.stackoverflow.MyPackage
(CamelCase)Apa standar umum?
Jawaban:
Inilah yang ditetapkan oleh dokumen konvensi penamaan resmi:
Paket
Awalan nama paket yang unik selalu ditulis dalam semua-huruf kecil ASCII dan harus menjadi salah satu nama top-level domain, saat ini
com
,edu
,gov
,mil
,net
,org
, atau salah satu dari Inggris kode dua huruf mengidentifikasi negara-negara sebagaimana ditentukan dalam ISO Standar 3166, 1981.Komponen selanjutnya dari nama paket bervariasi sesuai dengan konvensi penamaan internal organisasi sendiri. Konvensi tersebut dapat menentukan bahwa komponen nama direktori tertentu menjadi divisi, departemen, proyek, mesin, atau nama login.
Contohnya
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Perhatikan bahwa secara khusus, apa pun yang mengikuti awalan domain tingkat atas tidak ditentukan oleh dokumen di atas. JLS juga setuju dengan ini dengan memberikan contoh-contoh berikut:
com.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
Kutipan berikut juga relevan:
Dalam beberapa kasus, nama domain internet mungkin bukan nama paket yang valid. Berikut adalah beberapa konvensi yang disarankan untuk menangani situasi ini:
- Jika nama domain berisi tanda hubung, atau karakter khusus lainnya yang tidak diizinkan dalam pengidentifikasi, ubah itu menjadi garis bawah.
- Jika salah satu komponen nama paket yang dihasilkan adalah kata kunci, maka tambahkan garis bawah padanya.
- Jika salah satu komponen nama paket yang dihasilkan dimulai dengan angka, atau karakter lain apa pun yang tidak diizinkan sebagai karakter awal pengidentifikasi, buat awalan garis bawah pada komponen.
Ketiganya bukan konvensi.
Gunakan com.stackoverflow.mypackage
.
Nama paket tidak mengikuti casing unta atau garis bawah atau konvensi penamaan paket tanda hubung .
Selain itu, Google Java Style Guide menetapkan com.stackoverflow.mypackage
konvensi yang persis sama (yaitu ):
5.2.1 Nama paket
Nama paket semuanya huruf kecil, dengan kata-kata berurutan yang digabungkan bersama (tanpa garis bawah). Misalnya
com.example.deepspace
,, tidakcom.example.deepSpace
ataucom.example.deep_space
.- Google Java Style Guide: 5.2 Aturan berdasarkan jenis pengenal: 5.2.1 Nama paket .
Siapa pun dapat menggunakan garis bawah _ (tidak apa-apa)
Tidak seorang pun boleh menggunakan hypen - (praktik buruknya )
Tidak seorang pun harus menggunakan huruf kapital di dalam nama paket (Praktek buruk)
CATATAN: Di sini "Praktek Buruk" dimaksudkan untuk secara teknis Anda diizinkan menggunakannya, tetapi secara konvensional tidak sopan untuk menulis.
Sumber: Penamaan Paket (docs.oracle)
Konvensi penamaan resmi tidak seketat itu, mereka bahkan tidak 'melarang' notasi kasus unta kecuali untuk awalan ( com
dalam contoh Anda).
Tetapi saya pribadi akan menghindari huruf besar dan tanda hubung , bahkan angka. Saya akan memilih com.stackoverflow.mypackage
seperti yang disarankan Bragboy juga.
(tanda hubung '-' tidak sah dalam nama paket)
EDIT
Menarik - spesifikasi bahasa memiliki sesuatu untuk dikatakan tentang konvensi penamaan juga.
Dalam Bab 7.7 Nama Paket Unik, kita melihat contoh dengan nama paket yang terdiri dari huruf besar (jadi notasi CamelCase akan OK) dan mereka menyarankan untuk mengganti hyphonation dengan garis bawah ("mary-lou" -> "mary_lou") dan awalan java kata kunci dengan garis bawah ("com.example.enum" -> "com.example._enum")
Beberapa contoh lagi untuk huruf besar dalam nama paket dapat ditemukan di bab 6.8.1 Nama Paket .
Garis bawah terlihat jelek dalam nama paket. Untuk apa nilainya, dalam kasus nama gabungan dari tiga kata atau lebih saya menggunakan inisial (misalnya:) com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
dan kemudian mendokumentasikan tujuan paket di package-info.java
.
Penggabungan kata-kata dalam nama paket adalah sesuatu yang kebanyakan pengembang tidak lakukan.
Anda dapat menggunakan sesuatu seperti.
com.stackoverflow.mypackage
Lihat Deklarasi Nama JLS
com.stackoverflow.my.package