Sun (dan sekarang Oracle) memelihara sebuah dokumen berjudul Konvensi Kode untuk Bahasa Pemrograman Java . Pembaruan terakhir untuk ini adalah di '99, tetapi esensi dari garis panduan gaya hidup.
Bab 9 membahas konvensi penamaan.
Untuk jenis pengidentifikasi 'konstanta':
Nama-nama variabel yang dideklarasikan sebagai konstanta kelas dan konstanta ANSI harus semuanya huruf besar dengan kata-kata yang dipisahkan oleh garis bawah ("_"). (Konstanta ANSI harus dihindari, untuk memudahkan debugging.)
Contoh-contoh yang diberikan:
static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1;
Dalam dokumen yang lebih baru - itu tergelincir di sana. Dari Variabel (Tutorial Java> Mempelajari Bahasa Jawa> Dasar-Dasar Bahasa :
Jika nama yang Anda pilih hanya terdiri dari satu kata, eja kata itu dalam semua huruf kecil. Jika terdiri dari lebih dari satu kata, kapitalkan huruf pertama dari setiap kata berikutnya. Nama-nama gearRatio
dan currentGear
merupakan contoh utama dari konvensi ini. Jika variabel Anda menyimpan nilai konstan, seperti static final int NUM_GEARS = 6
, konvensi berubah sedikit, huruf besar setiap huruf dan pisahkan kata-kata berikutnya dengan karakter garis bawah. Dengan konvensi, karakter garis bawah tidak pernah digunakan di tempat lain.
Banyak analisa statis untuk Java berusaha untuk menegakkan ini. Misalnya checkstyle memberlakukan:
Pastikan nama konstan sesuai dengan format yang ditentukan oleh properti format. Konstanta adalah bidang statis dan final atau bidang antarmuka / anotasi, kecuali serialVersionUID
dan serialPersistentFields
. Formatnya adalah ekspresi reguler dan default untuk ^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$
.
Ini benar-benar bermuara pada konvensi komunitas yang menulis kode ... dan idealnya menjaganya tetap sama.
Contoh di atas diberikan sebagai contoh static final
yang kemungkinan berasal dari konvensi C untuk #define
- yang seperti C, diganti dalam kode selama kompilasi daripada pada saat runtime.
Pertanyaan yang kemudian harus ditanyakan adalah "apakah ini berperilaku seperti sebuah konstanta? Atau apakah itu berperilaku seperti bidang yang pernah ditulis?" - dan kemudian mengikuti konvensi yang sesuai. Tes lakmus untuk pertanyaan seperti itu adalah "Jika Anda membuat serial objek, apakah Anda akan memasukkan bidang terakhir?" Jika jawabannya adalah konstanta maka perlakukan seperti itu (dan jangan diserialisasi). Di sisi lain, jika itu adalah bagian dari keadaan objek yang perlu diserialisasi, maka itu bukan konstanta.
Apapun masalahnya, penting untuk tetap dengan gaya kode namun benar atau salah itu. Masalah yang lebih buruk muncul dari konvensi yang tidak konsisten dalam suatu proyek daripada hanya sesuatu yang menyinggung mata. Pertimbangkan untuk mendapatkan beberapa alat analisis statis dan konfigurasikan untuk mempertahankan konsistensi.