Teks yang dikutip adalah:
"Mengandalkan nilai-nilai default seperti itu, umumnya dianggap gaya pemrograman yang buruk."
Secara sinis: "secara umum dianggap bahwa" sering merupakan cara untuk mengatakan bahwa penulis belum mencoba menemukan sumber otoritatif untuk pernyataan yang disajikan.
Dalam hal ini pernyataannya jelas dipertanyakan. Bukti: 5 dari 5 Panduan Gaya Java yang disampling TIDAK mengatakan apa-apa tentang apakah Anda harus atau harus mengandalkan nilai default:
(Catatan, metodologi saya untuk pengambilan sampel adalah melihat 5 hit pencarian Google yang berbeda untuk "panduan gaya java". Kemudian saya mencari setiap dokumen untuk "default". Ini bukan analisis menyeluruh, tetapi berfungsi untuk menjelaskan maksud saya. )
BAIK. Jadi apakah itu benar-benar membantu keterbacaan kode Java?
Ini bisa diperdebatkan.
Di satu sisi, seorang programmer Java pemula yang belum belajar tentang inisialisasi default dapat bingung tentang dari mana nol atau nol berasal. Tetapi jika mereka bersusah payah untuk mencari inisialisasi eksplisit dan menemukan tidak ada, itu cukup untuk membuat mereka membaca tutorial atau buku untuk mencari tahu tentang inisialisasi default. (Kamu akan berharap!)
Di sisi lain, kami biasanya tidak mengharapkan programmer Java pemula untuk mempertahankan basis kode produksi. Untuk programmer Java yang berpengalaman, inisialisasi yang berlebihan tidak meningkatkan keterbacaan. Itu adalah kebisingan (paling-paling).
Menurut saya, satu-satunya hal yang dicapai dengan inisialisasi berlebihan pada suatu bidang adalah memberi sinyal kepada pembaca kode Anda di masa mendatang bahwa Anda telah memikirkan nilai awal. (Seperti yang diungkapkan @GhostCat, inisialisasi default tidak menunjukkan maksud.)
Tetapi sebaliknya jika saya adalah pembaca itu, saya tidak perlu mempercayai pemikiran penulis kode. Jadi nilai "sinyal" ini juga dipertanyakan.
Bagaimana dengan keandalan?
Di Jawa tidak ada bedanya. JLS menentukan bahwa inisialisasi default memang terjadi untuk bidang. Dan sebaliknya, untuk variabel lokal adalah kesalahan kompilasi untuk mencoba menggunakan variabel yang belum diinisialisasi dengan pasti.
Singkatnya, perilaku runtime dari variabel yang tidak diinisialisasi secara eksplisit sepenuhnya dapat diprediksi.
Dengan kontras dalam bahasa seperti C atau C ++ di mana variabel mungkin tidak diinisialisasi, perilaku tidak ditentukan , dan dapat menyebabkan crash, dan perbedaan perilaku pada platform yang berbeda. Kasus untuk selalu menginisialisasi variabel secara eksplisit jauh lebih kuat di sini.
Bagaimana dengan kinerja?
Seharusnya tidak ada bedanya. Kompiler JIT harus dapat memperlakukan inisialisasi yang berlebihan dan inisialisasi default sebagai sama.
private int count = 0;
adalah kode yang tidak melakukan apa-apa, dan kode yang tidak melakukan apa-apa berantakan. Ini seperti mengimpor kelas dari java.lang, atau mendeklarasikan kelas denganextends Object
.